多线程核心数据

时间:2013-03-14 11:28:00

标签: iphone objective-c core-data sdk

我很难弄清楚如何以最佳方式设置核心数据。现在我有一个单例,包含核心数据堆栈,主线程上运行一个ManagedObjectContext。在我阅读了很多文章和之后教程,我一直很困惑。一些单身人士可以和其他的统计数据,主线程上的单例和一个managedObjectContext的统计数据是个坏主意(这是正确的吗?)。那么如何使用多个线程

最有效地创建核心数据堆栈

由于我的应用程序正在下载并处理大量已解析的JSON数据到我的核心数据模型中,我想在后台线程中使用MOC导入这些数据,并使用主线程中的MOC显示数据,这是正确的方法

我尝试过使用魔法记录,但我认为有关此信息的“工具”很小,我似乎无法理解如何导入JSON数据,避免重复,创建关系等。

提前感谢您的帮助:)

3 个答案:

答案 0 :(得分:1)

最好创建两个NSManagedObjectContext。一个用于从核心数据读取并更新用户界面,另一个是将记录写入核心数据。使用主线程和后台线程时,它将避免冲突

答案 1 :(得分:1)

单核心数据或多线程核心数据的策略取决于您的应用程序的设计目标以及核心数据中保留的数据量(以及读取/写入的频率)

使用后台线程导入数据并在主线程上执行一些Core Data读取工作。只需确保每个线程都有一个MOC,并且只能在创建它的线程上访问每个MOC!核心数据的合并功能(例如mergeChangesFromContextDidSaveNotification:)非常有用。

此问题中的一些有用信息和接受的答案:

Core Data multi thread application

答案 2 :(得分:1)

如果锁定它,

单身就可以了。

两个没问题,但您将需要使用相同的后备存储,并从读取上下文中观察写入上下文的更改,然后合并更改。