如何检测Core Data Object关系属性更改

时间:2015-01-24 00:22:24

标签: ios objective-c core-data

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

我知道我可以用

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

但我不知道如何查看该通知是否包含photo.totalLikes更改,然后是该照片所属的帖子。

1 个答案:

答案 0 :(得分:3)

您可以订阅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"];
    }
}

如果你想知道照片属于哪个帖子,只需使用反向关系(建议不要设置一个)。