如何检测核心数据对象关系 属性 变化

How to detect Core Data Object relationship property changes

在我的 FRC 中正在获取 Posts.
Posts有很多照片s 我需要检测 Photo(totalLikes)的 属性 何时发生变化,以便我可以更新我的 tableview。

我知道我可以使用

监控变化
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contextChanged:) name:NSManagedObjectContextDidSaveNotification object:nil];

但我不确定如何查看该通知是否包含 photo.totalLikes 更改以及照片属于哪个 Post。

您可以订阅 NSManagedObjectContextWillSaveNotification。在其 userInfo 中,它传递所有更改的对象(使用 NSUpdatedObjectsKey 获取它们)。然后利用 changedValues method:

//in a notification handler
for(NSManagedObject *object in notification.userInfo[NSUpdatedObjectsKey]) {
    if([object isKindOfClass:[Photo class]]) {
      //if you get non-nil value it means that totalLikes has changed
      id newLikesValue = [object changedValues][@"totalLikes"];
    }
}

如果想知道这张照片属于哪一个Post,用反比关系就可以了(反正还是建议设置一个)