9

我有一个 NSOperation 子类,它正在将数据下载并导入 CoreData。

完成此操作后,我想保存上下文并将其合并到默认上下文中。

保存不是在一个块中完成的,它只是同步进行,因为它已经在一个 BG 线程中。

完成更改后,我应该使用哪种 MR 保存方法?

他们有几十个,但不确定每个人的作用。

我应该使用...

- (void)save:
- (void)saveOnlySelfAndWait;
- (void)saveToPersistentStoreAndWait;

或者我应该在...中进行所有更改

+ (void)saveUsingCurrentThreadContext...

我希望它是同步的,以便我可以控制操作的结束。

至少有人可以解释不同保存之间的差异。

4

1 回答 1

14

我承认这些方法没有很好地记录。但是,它们很好地遵循了 Core Data 嵌套上下文模型。

  1. MagicalRecord不要save:NSManagedObjectContext. _ MagicalRecord内置了所有这些额外的错误处理、日志记录和完成处理程序。你想使用它们。

  2. 您似乎知道数据需要去哪里(从一个上下文到根)。这取决于您需要使用哪种保存方法的层次结构。如果您只有一层深度(即在defaultContext的子上下文中),saveOnlySelfAndWait将保存到defaultContext. 否则,saveToPersistentStoreAndWait将为您遍历层次结构,一直到数据存储。

  3. 这些andWait方法是阻塞调用。处理程序完成的调用不是。这些在使用中是相当直接的。

于 2013-03-21T15:25:07.923 回答