我在我的应用程序中广泛使用CoreData来查看产品。所有数据同步都在后台的单独NSManagedObjectContexts上完成,当完成更改同步时,我调用mergeChangesFromContextDidSaveNotification
这种方法在99%的时间内完美运行。这是它崩溃的地方:
我相信正在发生的事情是CoreData正在提供该产品的缓存版本,并且在重新启动应用程序之后才会提供新版本的产品。我已经查看过其他一些项目。
如何在调用mergeChangesFromContextDidSaveNotification
之后清除此缓存?
这让我和我的客户感到疯狂 - 有谁知道如何解决这种情况?
答案 0 :(得分:2)
嗯,实际上可能有很多原因。 Core Data的一大优势是它的灵活性......这也是它的一大缺点。
您可以在数据库中设置大量与缓存和提取相关的旋钮。但最简单的一种方法是将fetch转到数据库或仅转到最新的MOC。
即,你应该看看这些:
- (BOOL)includesPendingChanges
- (BOOL)shouldRefreshRefetchedObjects
另外,请确保正确处理后台更新和DidSave通知,因为MOC应该合并这些更改。
不幸的是,在使用多个MOC时,Core Data有一些很难发现的交互。你必须非常小心遵守所有规则。