在迁移到新的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。
答案 0 :(得分:0)
SQLite错误23是authorization error。这可能意味着您已在应用程序功能中启用了数据保护(或者在加载持久性存储时使用NSPersistentStoreFileProtectionKey
),并且在文件不可访问时尝试访问持久性存储(例如当屏幕锁定时。)
如果可以关闭数据保护,则可以解决此问题。如果需要数据保护,则需要在应用程序委托中使用data protection related methods来检测应用程序何时可以安全地访问文件。