在后台线程中更新托管对象上下文

时间:2012-02-23 11:31:59

标签: iphone objective-c multithreading core-data nsmanagedobjectcontext

在我的iPhone上,我在后台线程中使用托管对象上下文(MOC)来将来自我的服务器的消息与存储在我的数据库中的消息同步。为了防止重复,我使用谓词获取新消息的ID,并检查这些消息是否已存在于数据库中。导入完成后,我将后台线程上的MOC与主线程上的默认MOC合并。到现在为止还挺好。

但是如果用户在主线程上创建新消息消息被同步(我已经在后台MOC上进行了获取以检查重复),我该如何更新后台MOC防止重复邮件?

最诚挚的问候 卡斯滕

1 个答案:

答案 0 :(得分:0)

通过观察 NSManagedObjectContextDidSaveNotification ,您可以收到主线程变化的通知:

[[NSNotificationCenter defaultCenter]
    addObserver:self
    selector:@selector(updateMessages:)
    name:NSManagedObjectContextDidSaveNotification
    object:mainManagedObjectContext];

您的 updateMessages:方法采用NSNotification参数:

- (void)updateMessages:(NSNotification *)notification
{
    [myManagedObjectContext mergeChangesFromContextDidSaveNotification:notification];
}

您可以使用 [通知userInfo] 获取有关更新的更精细信息。

相关问题