我有一个 NSOperation 子类,它正在下载数据并将其导入 CoreData。
完成此操作后,我想保存上下文并将其合并到默认上下文中。
保存不是在 block 中完成的,它只是同步执行,因为它已经在 BG 线程中。
完成更改后,我应该使用哪种 MR 保存方法?
它们有几十个,但不确定每个都做什么。
我应该使用...
- (void)save:
- (void)saveOnlySelfAndWait;
- (void)saveToPersistentStoreAndWait;
或者我应该在...中进行所有更改
+ (void)saveUsingCurrentThreadContext...
我希望它是同步的,以便我可以控制操作的结束。
至少有人可以解释不同保存之间的差异。
最佳答案
我承认这些方法没有很好的记录。然而,它们很好地遵循了 Core Data 嵌套上下文模型。
使用
MagicalRecord
不要在NSManagedObjectContext
上使用save:
。MagicalRecord
内置了所有这些额外的错误处理、日志记录和完成处理程序。您想使用它们。您似乎知道数据需要去往何处(从一个上下文到根)。关于您需要使用哪种保存方法,这取决于您的层次结构。如果您只有一层深度(即在 defaultContext 的子上下文中),
saveOnlySelfAndWait
将保存到defaultContext
。否则,saveToPersistentStoreAndWait
将为您遍历层次结构,一直到数据存储。andWait
方法是阻塞调用。完成处理程序的调用不是。它们的使用相当简单。
关于ios - 哪个MagicalRecord保存方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15551292/