我刚刚阅读了 MagicalRecord 的作者关于为什么 contextForCurrentThread 在 MagicalRecord 中不起作用的博客文章。
contextForCurrentThread
已弃用,saveWithBlock
应改为使用,因为它NSManagedObjectContext
为相关线程创建了一个安全的新线程。
contextForCurrentThread
到目前为止,我一直在我的应用程序中广泛使用。但是,我无法弄清楚如何使用saveWithBlock
,因为我的获取和保存不一定按顺序进行。
目前我正在做类似的事情:
localContext = NSManagedObjectContext.MR_contextForCurrentThread
person = Person.MR_createInContext(localContext)
person.name = "John Smith"
然后用户可以浏览应用程序,显示不同的控制器、视图等。可以使用与上述代码类似的方法创建其他对象。
然后在未来的某个任意时刻,当用户决定保存时,我运行这个方法:
localContext = NSManagedObjectContext.MR_contextForCurrentThread
localContext.MR_saveToPersistentStoreWithCompletion(
lambda { |success, error|
# ...
}
)
创建和更新对象然后在不使用的情况下保存它们的推荐方法是什么contextForCurrentThread
?