Core Data / NSFetchedResultsController – 注册与获取的对象相关的已更改对象

我使用NSFetchedResultsController来获取UITableView显示的对象列表。 如果我更改对象中的值,则整个事件会触发并自动重新加载已更改的行。 但其中一个显示值来自相关对象(一对多关系)。 这些对象具有瞬态标题(因此它的值再次来自另一个对象)。 当此标题更改时,不会重新加载行。

问题:有人可以建议一个干净的解决方案吗?

可能的脏解决方案:我可以在类中创建一个瞬态属性,该属性使用“假”setter方法获取,因此NSFetchedResultsController将看到更改并触发重新加载。 但在我看来,这很脏。

提前致谢!

FRC跟踪一个特定实体的对象属性的变化。 因此不跟踪相关实体的对象的变化。 但是你可以使用KVO来触发FRC反应。

 [Department].employees <->> [Employee].department 

Employee.m

 - (void)setTitle:(NSString *)title { [self willChangeValueForKey:@"title"]; [self setPrimitiveValue:title forKey:@"title"]; [self didChangeValueForKey:@"title"]; [self.department willChangeValueForKey:@"employees"]; [self.department didChangeValueForKey:@"employees"]; } 

或类似的东西(虽然我自己没有测试过):

 - (void)didChangeValueForKey:(NSString *)key { [super didChangeValueForKey:key]; if (self.department && [key isEqualToString:@"title"]) { [self.department willChangeValueForKey:@"employees"]; [self.department didChangeValueForKey:@"employees"]; } }