MagicalRecord 中的 MR_saveToPersistentStoreWithCompletion 方法和 MR_saveToPersistentStoreAndWait 方法有啥区别

Posted

技术标签:

【中文标题】MagicalRecord 中的 MR_saveToPersistentStoreWithCompletion 方法和 MR_saveToPersistentStoreAndWait 方法有啥区别【英文标题】:what's the difference between MR_saveToPersistentStoreWithCompletion method and MR_saveToPersistentStoreAndWait method in MagicalRecordMagicalRecord 中的 MR_saveToPersistentStoreWithCompletion 方法和 MR_saveToPersistentStoreAndWait 方法有什么区别 【发布时间】:2015-09-12 04:17:11 【问题描述】:

我正在学习如何使用 MagicalRecord 来操作 CoreData,有两个方法 MR_saveToPersistentStoreWithCompletion 和 MR_saveToPersistentStoreAndWait。看一下cmets,好像区别是第一个异步保存更改,后一个同步保存更改。

所以这是他们之间的唯一区别?它们是如何工作的?以及异步和同步保存数据有什么区别?

我查看了他们的源代码,但由于我是初学者,无法完全理解,所以有人可以帮忙解释一下吗?谢谢。

【问题讨论】:

【参考方案1】:

异步保存在performBlock的保护内完成,同步保存在performBlockAndWait的保护内完成。

异步保存将立即返回,并且保存将在后台线程上进行。如果它是一个主队列上下文,则保存将在未来某个时间发生,在当前运行循环迭代完成之后。保存完成后,将调用作为完成处理程序传入的代码块,让您知道保存已完成。

同步保存将在方法调用返回之前发生。因此,当方法返回时,您就知道所有的保存工作已经完成,或者遇到了错误。

您应该查看Core Data documentation 以了解更多详细信息。

【讨论】:

感谢您的回复。我现在清楚了。我会阅读 Core Data 文档。

以上是关于MagicalRecord 中的 MR_saveToPersistentStoreWithCompletion 方法和 MR_saveToPersistentStoreAndWait 方法有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

静态库中的 MagicalRecord:如何加载数据模型?

删除 MagicalRecord 中的实体不持久

处理 MagicalRecord 中的 saveWithBlock 和关系时出错

MagicalRecord 获取关系 id 为 x 的一对多关系中的所有实体

如何在 Swift 中使用 MagicalRecord CoreData 删除 tableview 中的记录

将 MagicalRecord 与 RestKit 中的另一个现有上下文一起使用