【问题标题】:Multithreaded Core data多线程核心数据
【发布时间】:2013-03-02 17:23:14
【问题描述】:

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

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

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

提前感谢您的帮助:)

【问题讨论】:

标签: iphone objective-c core-data sdk


【解决方案1】:

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

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

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

Core Data multi thread application

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多