Ios CoreData并通知后台工作人员主线程的更改

Ios CoreData并通知后台工作人员主线程的更改,ios,core-data,restkit,Ios,Core Data,Restkit,我以为我的情况很简单,但经过一整天的搜索,我不确定我是否有答案 我正在使用CoreData(通过实际使用RestKit和[RKObjectManager sharedManager].objectStore)。我只将数据保存在主线程上。虽然我有很多后台线程从数据库读取数据。如果主线程(使用mainNSManagedObjectContext)将数据保存到数据库中,我找不到通知这些后台线程的好方法 我看到的唯一方法是保留一个所有后台线程的列表,NSManagedObjectContexts,并在主

我以为我的情况很简单,但经过一整天的搜索,我不确定我是否有答案

我正在使用CoreData(通过实际使用RestKit和
[RKObjectManager sharedManager].objectStore
)。我只将数据保存在主线程上。虽然我有很多后台线程从数据库读取数据。如果主线程(使用main
NSManagedObjectContext
)将数据保存到数据库中,我找不到通知这些后台线程的好方法

我看到的唯一方法是保留一个所有后台线程的列表,
NSManagedObjectContexts
,并在主线程上处理
NSManagedObjectContextDidSaveNotification
时,从contextdidsavenotification发送每个
mergechanges


这是处理这种情况的正常方式吗?我有一种感觉,这不是因为在多线程环境中管理这种缓存可能会出现的潜在问题。

没有详细信息,很难理解发生了什么,但是可以在后台线程中使用
NSManagedObjectContextDidSaveNotification

但要小心,如果你创建了很多线程来监听变化,电池可能会很快耗尽

根据我的经验,核心数据中的线程应该如下使用:在共享持久存储协调器中创建一个或多个执行某些请求的线程。螺纹完成后,停止(移除)螺纹。这种机制允许您将数据加载到存储协调器的缓存中,从而加快在主线程中执行的未来请求

希望有帮助


另外,我不知道RestKit如何处理核心数据。

为什么需要通知这些线程?你有多少线?你用什么类型的线?是的,
NSManagedObjectContextDidSaveNotification
是通知他们的正确方式。