【问题标题】:Use of managed object context in background and main thread在后台和主线程中使用托管对象上下文
【发布时间】:2013-01-29 10:45:17
【问题描述】:

我有一个在点击按钮时被调用的函数。此外还有从这个方法调用的方法[self getData],它使用核心数据更新db中的值。

另外,我有一个后台线程正在运行,每分钟执行一次。我在后台线程中使用了单独的托管对象上下文和托管对象通知。但我不确定是在[self getData] 中使用新的托管对象实例还是[self managedObjectContext],因为此方法是在主线程上调用的,我是否必须为此使用托管对象通知?

在这些情况下,当有方法在后台和主线程上运行时,最佳做法是什么。

【问题讨论】:

    标签: iphone ios5 core-data


    【解决方案1】:

    您可以使用私有队列并发类型创建一个临时上下文,它是主托管对象上下文的子级:

    NSManagedObjectContext *temporaryContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
    temporaryContext.parentContext = [self managedObjectContext];
    [temporaryContext performBlock:^{
       // ...
    }]
    

    当我研究如何执行此操作时,我发现本教程非常有用: http://www.cocoanetics.com/2012/07/multi-context-coredata/

    【讨论】:

    • 感谢您的回复,我正在检查它
    猜你喜欢
    • 1970-01-01
    • 2014-10-04
    • 2018-09-02
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多