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
在商店已经打开时尝试重新打开商店。
我有一个带有 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
在商店已经打开时尝试重新打开商店。