2016-02-22 90 views
0

週五我在iOS應用商店做了一個應用程序更新。一段時間後,一些用戶向我報告崩潰:應用程序開始後崩潰,但只爲一些人。我想大約有10-20%的用戶受到影響。我使用的面料/ crashlytics,在這裏你可以看到統計:CoreData崩潰PersistentStoreCoordinator有時無法創建


enter image description here


我的大學今天上午這也錯誤給了我一個iphone。主要問題是沒有保存操作saveContext:,但該persistantStoreCoordinator不能創建:

可可錯誤134130.原因=無法找到源店模式}與 USERINFO字典{URL = 「文件:///var/mobile/Containers/Data/Application//Documents/database.sqlite「}

在我看來不可能有一個數據庫錯誤,因爲單獨然後每用戶將有這個問題。一些stackoverflow帖子聲稱,如果您更改較舊的型號版本,則會顯示錯誤134130。但我沒有,在我的情況下,這不能成爲問題的根源,因爲那樣它就無法在許多設備上工作。如果你有什麼想法,請告訴我!

+0

您是否已添加或刪除早期版本的任何核心數據字段? –

+0

即使他們不應該也會發生這些事情。這是很有可能的,一旦你創建了一個新的核心數據重新編譯和搞砸了,所以一些設備上有「不兼容」的版本。 Sill無論你看起來設計不好的原因,現在你的代碼崩潰了。即使這意味着刪除用戶的本地數據庫,也需要不惜代價處理這些異常。如果這是不可接受的,你最好創建一個當前數據庫的備份和一個系統供用戶通過電子郵件發送文件給你,這樣你可以修復它並以某種方式將數據注入發件人。 –

+0

如果可能,請嘗試恢復應用商店中當前的當前版本。它應該能夠使用仍在設備上的數據庫,因爲在出​​現此類錯誤時不會將其刪除。同時保存朋友提供給您的衝突數據庫,並嘗試將其注入到您的系統中。可能有一個特定的表或一個產生不一致的字段,因此沒有使用該數據庫部分的用戶沒有問題。 –

回答

1

我猜你的舊版本可能存在遷移問題。您可以檢查是否低於參數在代碼

[_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]作爲一個選項傳遞

//****For DB Migration 
NSDictionary *options = @{ 
          NSMigratePersistentStoresAutomaticallyOption : @YES, 
          NSInferMappingModelAutomaticallyOption : @YES 
          }; 

如果沒有,請添加並檢查,因爲這有助於在應用程序從當前版本更新到新版本時輕度移植。

只有20%的用戶面臨這個問題,我可以想到的原因是他們可能跳過上次更新並嘗試更新到剛剛發佈的新版本。

+0

好猜,但那些參數自應用程序的第一個版本開始傳遞。 – donmarkusi

+0

它是通過刪除數據庫文件來清理數據的任何地方嗎? –

+0

不,我不知道。我可以找到錯誤,看到我的答案。不管怎麼說,還是要謝謝你! – donmarkusi

1

幾個小時後我發現了這個問題:當我將模型與SVN合併時,有一個小錯誤。我已將Integer 16修改爲Integer 64。因此,之前的模型與舊版應用程序的模型完全不同,但我無法在SVN中看到它。無論如何,感謝您的意見,它幫助我找到出錯的原因!

爲什麼只有20%的用戶受到影響的原因是,只有大約20%的核心數據實體中有一些數據受到影響(包含一些特殊配置)。