多线程核心数据



我很难弄清楚如何以最好的方式设置Core数据。现在我有一个单例,包含核心数据堆栈和一个在主线程上运行的ManagedObjectContext。在我读了很多文章之后辅导课上,我一直很困惑。一些统计数据表明单例是可以的,而另一些统计数据表明单例和一个managedObjectContext在主线程上是一个坏主意(这是正确的吗?)。那么,如何使用多个线程最有效地创建核心数据堆栈呢?

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

我试过使用神奇的记录,但我认为关于这是"工具"的信息是小的,我似乎不能得到我的头如何导入JSON数据,避免重复,创建关系等。

提前感谢您的帮助:)

Core Data 是单线程还是多线程的策略取决于你的应用程序要做什么以及它在Core Data中保留了多少数据(以及它被读/写的频率)。

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

这个问题的一些有用信息和公认的答案:

Core Data多线程应用

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

singleton是可以的,如果你锁定它。

两个是可以的,但是您需要使用相同的后备存储,并观察来自读上下文的写上下文的更改,然后将更改合并到。

最新更新