CoreData崩溃有时无法创建PersistentStoreCoordinator

时间:2016-02-22 08:50:58

标签: ios objective-c core-data crashlytics

周五我在iOS应用商店上做了应用更新。一段时间后,一些用户向我报告了崩溃:应用程序在启动后直接崩溃,但仅限于某些人。我猜大约有10-20%的用户受到影响。我正在使用fabric / crashlytics,在这里你可以看到统计数据:

enter image description here

我的大学今天早上给了我一个iPhone,还有这个bug。主要问题不是保存操作saveContext:,而是无法创建persistantStoreCoordinator:

  

Cocoa-Error 134130. reason =无法找到源存储的模型}   userInfo字典{URL =   “文件:///var/mobile/Containers/Data/Application//Documents/database.sqlite”}

在我看来,不能单独存在数据库错误,因为每个用户都会遇到此问题。某些stackoverflow帖子声称如果您更改旧版本的版本,则会出现错误134130。但我没有,在我的情况下,这不能成为问题的根源,因为那样它就无法在那么多设备上运行。如果你有什么想法,请告诉我!

2 个答案:

答案 0 :(得分:1)

我猜你的旧版本可能存在迁移问题。你能检查下面的参数是否通过

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

代码

[_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]作为选项。

如果没有,请添加并检查,因为这有助于轻松迁移,同时应用从当前版本更新为新版本。

我只能考虑面对此问题的20%用户的原因是他们可能已跳过上次更新并尝试更新到刚刚发布的新版本。

答案 1 :(得分:1)

我在几个小时后发现了这个问题:当我将模型与SVN合并时,有一个小小的提交丢失了。我已将Integer 16修改为Integer 64。所以之前的模型与旧的应用程序版本完全不同,但我无法通过SVN看到它。无论如何,感谢您的评论,它帮助我找到了出错的原因!

只有约20%的用户受到影响的原因是,只有大约20%的用户在核心数据实体中有一些受影响的数据(它包含了一些特殊配置)。