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 中的 saveWithBlock 和关系时出错
MagicalRecord 获取关系 id 为 x 的一对多关系中的所有实体