我有一个现有的应用程序(使用MagicalRecord),我正在尝试融入组件。在我的应用程序中,我遇到了几个使用MR_saveToPersistentStoreWithCompletion保存的地方。在集成MagicalRecord示例中,我注意到它使用MR_saveToPersistentStoreAndWait。
我知道两者之间有什么区别;问题是:对于组件,我应该总是使用MR_saveToPersistentStoreAndWait?吗?如果没有,我应该使用MR_saveToPersistentStoreWithCompletion的情况是什么?
发布于 2015-12-17 10:42:35
主要要注意的是,使用完成块涉及后台的异步保存,一旦保存完成,组件必须从触发的通知中捕获更改。
一般来说,这不是一个问题,但当终止或到后台时,给集合一个机会完成保存它在通知中观察到的内容是很重要的。因此,在这种情况下,您应该使用“保存和等待”变体,以确保在集成中使用processPendingChanges...方法之前存储已经完全保存。如果您使用非阻塞方法,您不能确定当您要求组件处理挂起的更改时保存完成,因此有一个风险,它将无法完成之前,应用程序被终止。
在后台保存还有一个更奇特的复杂问题,涉及在不同设备上创建具有相同全局标识符的对象,但它只会影响少数应用程序。您可以在合集书中阅读更多关于这种情况的信息。
https://stackoverflow.com/questions/34321914
复制相似问题