【问题标题】:Is it sufficient to create a new NSManagedObjectContext for every new NSOperation or Thread?为每个新的 NSOperation 或线程创建一个新的 NSManagedObjectContext 就足够了吗?
【发布时间】:2011-06-01 13:31:55
【问题描述】:

我需要在 NSOperationQueue 操作中使用 Core Data。我听说为每个 NSOperation 或线程创建一个 NSManagedObject 实例就足够了,然后 Core Data 就不会出现多线程问题。这是正确的吗?

当其他 MOC 在 NSOperations 中被修改时,其他 MOC 是否会自动更新?

【问题讨论】:

    标签: iphone multithreading ios core-data nsoperation


    【解决方案1】:

    您对每个线程/操作都需要一个新的 MOC(托管对象上下文)是正确的。为新上下文提供与主上下文相同的持久存储协调器,然后在保存需要处理合并的上下文时。请在此处查看我之前的答案,其中解释了如何执行合并:

    How to Deal with Temporary NSManagedObject instances?

    【讨论】:

      【解决方案2】:

      当其他 MOC 在 NSOperations 中被修改时,其他 MOC 会自动更新吗?

      没有。您需要处理NSManagedObjectContextDidSaveNotification 通知并使用mergeChangesFromContextDidSaveNotification: 合并更改。详情请参阅the documentation,以及其他方法。

      【讨论】:

        猜你喜欢
        • 2022-01-12
        • 2011-03-23
        • 2011-09-06
        • 1970-01-01
        • 2013-09-23
        • 1970-01-01
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        相关资源
        最近更新 更多