我制作了一个 iOS 8 应用程序,它使用新的应用程序组功能与扩展程序共享核心数据存储。它工作得非常好,以至于我想我会尝试使用 2 个独立的应用程序来共享一个应用程序组容器中的核心数据存储。但是,虽然它在 App 和 Extension 之间工作,但在与 2 个应用程序共享时,我遇到了 Core Data 存储损坏问题。
根据我打开 2 个应用程序的顺序,我会收到不同的错误:
提取导致此错误:
CoreData:错误:(522)/private/var/mobile/Containers/Shared/AppGroup/[…].sqlite 的数据库 I/O 错误。SQLite 错误代码:522,'不是错误'</p>
保存导致此错误:
CoreData:错误:(11)致命错误。/private/var/mobile/Containers/Shared/AppGroup/[...].sqlite 的数据库已损坏。SQLite 错误代码:11,'数据库磁盘映像格式错误'</p>
或者:
核心数据:错误:-executeRequest:在 SQL 执行期间遇到异常 = 错误:PRIMARY KEY 必须是唯一的 userInfo = { NSFilePath = "/private/var/mobile/Containers/Shared/AppGroup/[...].sqlite"; NSSQLiteErrorDomain = 19; } CoreData:错误:(19)PRIMARY KEY 必须是唯一的