尝试在CoreData中添加持久性存储时出现不一致的崩溃

时间:2019-01-02 15:16:23

标签: ios core-data core-data-migration

在迁移到新的CoreData模型时,Firebase和Xcode崩溃历史记录报告了某些设备上发生的奇怪崩溃。唯一需要修改并添加3个新属性的方法是删除一个表/对象中的几个属性。我已经重新生成了类并升级了模型版本,因为它不需要迁移,但迁移量很小。

我所得到的是:

crash_info_entry_0
Fatal error: Error migrating store: Error Domain=NSCocoaErrorDomain Code=256 
"The file "<FileName>.sqlite" couldn't be opened." UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/45859729-F07E-4006-8742-3B53DF6D1CE9/Documents/<FileName>.sqlite, NSSQLiteErrorDomain=23}: file /ProjectName/Repo/Models/Storage/CoreData/CoreDataEngine.swift, line 137

我正在使用Swift 4.2。

1 个答案:

答案 0 :(得分:0)

SQLite错误23是authorization error。这可能意味着您已在应用程序功能中启用了数据保护(或者在加载持久性存储时使用NSPersistentStoreFileProtectionKey),并且在文件不可访问时尝试访问持久性存储(例如当屏幕锁定时。)

如果可以关闭数据保护,则可以解决此问题。如果需要数据保护,则需要在应用程序委托中使用data protection related methods来检测应用程序何时可以安全地访问文件。