【问题标题】:Keeping NSManagedObjects in multiple contexts synchronized使多个上下文中的 NSManagedObjects 保持同步
【发布时间】:2014-08-09 09:57:18
【问题描述】:

我需要针对以下情况的建议。我的应用程序中有两个托管对象上下文。根据线程,它们通过相同的属性访问,即

self.managedObjectContext

如果任何上下文更改或保存数据,我想使用

在两个上下文上保持数据同步

-refreshObject:mergeChanges:

并传递 mergeChanges = YES,并且该应用程序还在侦听通知 NSManagedObjectContextDidSaveNotification。但我不知道哪个上下文保存了数据。 (或者我可以吗?如果可以,有人可以告诉我吗?)

我的问题是,在收到此通知后,我应该在两种情况下都执行 -refreshObject:mergeChanges: 吗?例如

[bgContext refreshObject:self mergeChanges:YES];
[fgContext refreshObject:self mergeChanges:YES];

[self.managedObjectContext refreshObject:self mergeChanges:YES];

或者我应该遵循什么方法?

【问题讨论】:

    标签: ios core-data nsmanagedobjectcontext


    【解决方案1】:

    在您对NSNotificationCenter -addObserver:selector:name:object: 的调用中,提供适当的MOC 作为:object 参数。现在您只会收到来自该 MOC 的更改通知。如果您使用基于块的addObserver:... 调用,object: 参数的工作方式相同。

    您也可以只使用通知,而无需为每个上下文注册不同的选择器/块。当通知到达时,您可以检查其object 属性并使用它来确定需要更新的上下文。

    【讨论】:

    • 好的,我试试看。谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-01-17
    • 2019-05-28
    • 1970-01-01
    • 2015-07-17
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    相关资源
    最近更新 更多