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

标签 ios objective-c core-data watchkit ios-app-group

我有一个带有 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/

相关文章:

iphone - 当 wifi 源失去连接时如何检测互联网可达性丢失?

objective-c - 如何在 Objective-C 中声明类级别的属性?

iphone - Dealloc'd 谓词导致 iPhone 应用程序崩溃!

ios - 使用 NSFetchRequest 和 NSPredicate 时 SwiftUI 列表更新缓慢

iphone - 如何在绘图应用程序中撤消和重做操作

c++ - 为什么我的 CFRunLoopTimer 没有触发?

ios - 新手卡住了。这个弹出/滑动菜单叫什么?包括视频预览

ios - NSString 到 UInt64

iphone - 我如何检查我的应用程序的帧率?

ios - 在 App 和 Today Extension 之间快速共享 CoreData