1

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

由于我的应用程序正在将大量解析的 JSON 数据下载并处理到我的核心数据模型中,所以我想在带有 MOC 的后台线程中导入这些数据,并在主线程中使用 MOC 显示数据,这样对吗怎么做

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

提前感谢您的帮助:)

4

3 回答 3

1

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

于 2013-03-14T11:47:23.117 回答
1

Core Data 的单线程或多线程策略取决于您的应用程序的设计目的以及它在 Core Data 中保留了多少数据(以及读取/写入的频率)。

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

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

Core Data 多线程应用

于 2013-03-14T13:07:51.650 回答
1

如果你锁定它,单身就可以了。

两个都可以,但是您将希望使用相同的后备存储,并从读取上下文观察写入上下文的更改,然后合并更改。

于 2013-03-14T13:11:54.563 回答