首页 > 代码库 > 多线程下处理Core Data操作

多线程下处理Core Data操作

注意:这篇文章在写的时候,已经有更好的方法产生了。 

注意:可以用线程(NSThread),GCD,或者OperationQueue 来操作。

 

用线程禁闭来支持并发

每个线程必须有自己的managed object context。这里有两个可能的模式。

1.每个线程创建一个managed object context,共享一个persistent store coordinator。这是推荐的模式

2.每个线程有单独的manged object context,和persistent store coordinator。

这种模式开支比较大

 

如果用的是OperationQueue,在main或者start方法里面创建context。

如果用了线程紧闭,不能在线程间传递managed objects或者managed object contexts。

如果让它在线程间的context创建,就会超越线程的边界。

 - 通过objectID来查找object

 - 执行一个fetch来找到context

这样可以在本地的context来找到本地版本的managed object。

可以用NSFetchRequest提供的方法来穿越线程更容易。

多线程下处理Core Data操作