iOS 应用组 - 共享 CoreData 无法打开

iOS App groups - shared CoreData fails to open

我有一个带有 CoreData 数据库的应用程序并使用 UIManagedDocument 访问它。 为了与 Watchkit 应用程序共享数据,我将数据库移动到共享应用程序组。

商店似乎已正确创建,但之后通常无法访问它:UIManagedDocument 一直尝试重新配置商店,而 NSFileManager 找不到文件( fileExistsAtPath).

问题出在数据库位置 - 如果我将它保存在 documents 目录而不是共享组中,它可以正常工作。从两个应用程序访问它也不是问题,即使我根本不打开手表应用程序也会出现问题。该组也可以正常共享 NSUserDefaults.

有没有人看到类似的问题?有没有我需要以特定方式处理的锁定机制? 任何帮助将不胜感激,我一直在努力解决这个问题!

经过大量搜索,我发现商店URL会在这两者之间(随机)变化:

file:///var/mobile/...
file:///private/var/mobile/...

我按照以下答案在 URL 上使用了 URLByResolvingSymlinksInPath,令人难以置信的是,它修复了它: What does the /private prefix on an iOS file path indicate?

我假设这是 App Group 路径的系统错误...似乎不同的路径导致 persistentStoreCoordinator 在商店已经打开时尝试重新打开商店。