我有一个带有 CoreData 数据库的应用程序,并使用 UIManagedDocument
访问它。
为了与 Watchkit
应用共享数据,我将数据库移动到共享应用组。
store 看起来是正确创建的,但之后通常无法访问它:UIManagedDocument
一直尝试重新配置 store,而 NSFileManager
没有找到文件(使用 fileExistsAtPath
)。
问题出在数据库位置 - 如果我将它保存在 documents 目录而不是共享组中,它可以正常工作。从两个应用程序访问它也不是问题,即使我根本不打开 watch 应用程序也会出现问题。该组也可以正常共享 NSUserDefaults
。
有没有人看到类似的问题?是否有任何我需要以特定方式处理的锁定机制? 任何帮助将不胜感激,我一直在努力解决这个问题!
最佳答案
经过大量搜索,我发现 storeURL 会在这两者之间(随机)变化:
file:///var/mobile/...
file:///private/var/mobile/...
我在以下答案中指定的 URL 上使用了 URLByResolvingSymlinksInPath
,令人难以置信的是,它修复了它:
What does the /private prefix on an iOS file path indicate?
我假设这是 App Group 路径的系统错误...似乎不同的路径导致 persistentStoreCoordinator
在商店已经打开时尝试重新打开它。
关于iOS 应用组 - 共享 CoreData 无法打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30594856/