Core data 核心数据和中央大调度?

Core data 核心数据和中央大调度?,core-data,grand-central-dispatch,Core Data,Grand Central Dispatch,如果我知道没有其他事情发生(即,我的程序此时仅对数据执行此GCD处理),在GCD块内以不交互的方式使用核心数据NSManagedObject是否可以 假设NSManagedObject不能与线程一起使用。然而,这对我来说是模糊的。这可能是不安全的,因为发生了错误(因此数据实际上不是不可变的)-但是,错误不应影响内存中的其他NSManagedObject数据。除非,在我使用其他NSManagedObject时,数据的错误插入实际上会导致其他NSManagedObject的错误。那会发生吗 更具体地

如果我知道没有其他事情发生(即,我的程序此时仅对数据执行此GCD处理),在GCD块内以不交互的方式使用核心数据NSManagedObject是否可以

假设NSManagedObject不能与线程一起使用。然而,这对我来说是模糊的。这可能是不安全的,因为发生了错误(因此数据实际上不是不可变的)-但是,错误不应影响内存中的其他NSManagedObject数据。除非,在我使用其他NSManagedObject时,数据的错误插入实际上会导致其他NSManagedObject的错误。那会发生吗


更具体地说,我说的是在我的核心数据对象图的一个节点上获取一组所有NSManagedObjects(NSNumber),然后向每个NSManagedObject添加1。

您只需要确保(1)每个线程/操作都有其唯一的托管对象上下文,以及(2)最终将更改与所有其他同时活动的上下文合并


很常见的情况是,后台线程下载数据并将其放入核心数据,而前台线程管理UI。每个线程都有自己的上下文,它们独立运行,直到下载完成,这时后台上下文通知前端线程上下文它必须合并更新的对象

请用GCD术语解释一下,我没有明确地管理线程。我如何知道要有多少MOC以及如何使用它们?为创建的每个操作初始化一个上下文。您可以将每个操作视为自己的小程序。因此,每个小程序都需要自己的上下文。请参阅《核心数据编程指南》的并发部分。同样的原则也适用于线程所使用的操作。最重要的概念是,在合并更新之前,每个上下文都不知道其他上下文所做的更改。这是否意味着每个dispatch_async调用都应该/必须设置自己的managedObjectContext?