我这里有一个奇怪的问题。我没有在我的 NSManagedObject 上获得“更新”操作的回调,但是在该实体类型的集合中插入或删除的任何对象都会触发委托回调。
在我进一步处理问题之前,我想告知我的设置:
NSFetchedResultsController 配置正确。确保正在外部修改的属性不是本 Apple 文档所要求的 fetchedResultsController 的任何排序键:
当对象的状态发生更改时会报告更新,但更改的属性不是排序键的一部分。
只有一个托管对象上下文发生了这些修改。
由于插入和删除操作正在报告给代表,我认为更新操作有些可疑
我在 RKLogs 的帮助下深入研究了 Restkit 代码,以查看映射发生的确切位置以及 coredata 对象正在更新的位置,以找出未获得更新委托回调的原因。
在类RKManagedObjectMappingOperation
-performMapping 方法中,Blake Watters 先生记录了更新时未触发 MOC 回调的原因:
- (BOOL)performMapping:(NSError **)error
{
BOOL success = [super performMapping:error];
if ([self.objectMapping isKindOfClass:[RKManagedObjectMapping class]]) {
/**
NOTE: Processing the pending changes here ensures that the managed object context generates observable
callbacks that are important for maintaining any sort of cache that is consistent within a single
object mapping operation. As the MOC is only saved when the aggregate operation is processed, we must
manually invoke processPendingChanges to prevent recreating objects with the same primary key.
See https://github.com/RestKit/RestKit/issues/661
*/
[self connectRelationships];
}
return success;
}
但我无法为自己的一生弄清楚如何解决这个问题?因为这是故意的?
有没有人遇到过同样的问题?我如何解决它?
谢谢,拉吉帕万