我有一个NSOperation子类,它正在下载数据并将数据导入CoreData。
一旦我完成了这项工作,我想保存上下文并将其合并到默认上下文中。
保存不是在块中进行的,它只是同步进行,因为它已经在BG线程中。
一旦我完成了我应该使用MR保存方法的更改吗?
有几十个,并不确定每个人做了什么。
我应该使用......
- (void)save:
- (void)saveOnlySelfAndWait;
- (void)saveToPersistentStoreAndWait;
或者我应该在...中进行所有更改。
+ (void)saveUsingCurrentThreadContext...
我希望它是同步的,这样我就可以控制操作的结束。
至少有人可以解释不同保存之间的差异。
答案 0 :(得分:14)
我承认这些方法没有很好地记录。但是,它们很好地遵循Core Data嵌套上下文模型。
MagicalRecord
save:
不在NSManagedObjectContext
上使用MagicalRecord
。 saveOnlySelfAndWait
内置了所有额外的错误处理,日志记录和完成处理程序。您想要使用它们。
您似乎知道数据需要去哪里(从一个上下文到根)。这取决于您需要使用哪种保存方法的层次结构。如果您只有一个级别(即在 defaultContext 的子上下文中),defaultContext
将保存到saveToPersistentStoreAndWait
。否则,andWait
将遍历您的层次结构,一直到数据存储。
{{1}}方法阻止了来电。完成处理程序的调用不是。这些在使用中相当直接。