我的设置:
- 连接到我的
NSManagedObjectContext
with 类型NSPrivateQueueConcurrencyType
NSPersistentStoreCoordinator
- 作为私有上下文的子级的with
NSManagedObjectContext
类型。NSMainQueueConcurrencyType
- 作为主上下文的子级的with
NSManagedObjectContext
类型。NSConfinementConcurrencyType
从服务器下载数据时,我将数据写入 type 的上下文NSConfinementConcurrencyType
。然后我保存这个上下文,它将更改推送到我的主要上下文。然后我保存我的主要上下文,它将更改推送到我的私人上下文。此时,我使用performBlock
私有上下文上的方法将所有内容保存到我的持久存储中。
在设备上进行调试时,这可以完美地工作。每当我归档应用程序并在发布模式下运行应用程序时,我的主上下文永远不会收到更改,即使我成功保存了它的子上下文。我已经仔细检查了,我的临时上下文确实链接到主上下文(主上下文确实显示为临时上下文的父级)。但是每当我在发布模式下保存临时上下文时,主上下文永远不会显示任何更改。我很困惑为什么这会在调试模式下工作而不是在发布模式下工作。
任何建议/帮助将不胜感激。
谢谢,
新郎
编辑:如果我使用调试配置存档构建,一切都按预期工作。因此,发布配置中有一些不同的设置。我会报告我的发现。
编辑2:找到罪魁祸首。所以我将我的保存上下文调用包装在一个 NSAssert 中(希望在测试时发现任何失败)。不幸的是,Release 配置删除了这些包含我的保存调用的断言块。掌心