关联计数更改时强制NSFetchedResultsController更新

时间:2010-10-04 21:51:56

标签: iphone uitableview core-data uikit nsfetchedresultscontroller

我有一个NSFetchedResultsController,它在表视图中显示项目列表,包括关联实体的计数。为此关联添加对象(使用addXXXObject)时,不会调用任何回调来通知我的控制器更新。

如何收到添加到父实体的NSSet的对象的通知,或以其他方式强制提取的结果控制器更新?

要清楚,我目前正在使用parent.children.count检索计数,这可能不是最理想的。有没有更好的方法去做这整件事?它基本上只是一个像iPhone Mail应用程序的屏幕,文件夹显示内部消息的数量。

1 个答案:

答案 0 :(得分:0)

我的模型有点不同,但很容易翻译成你的模型 我有一个树状的结构:

  • 元素
    • 标题
    • parent(to-one)
  • 文件夹:元素
    • 儿童(对许多人)
  • 文件:元素

添加或删除文件时,只有队列中的第一个文件夹会收到有关此更改的通知。当文件的标题发生更改时,不会通知单个文件夹。那么,该怎么办?
我尝试覆盖-willChangeValueForKey:和-didChangeValueForKey:在我的Element类中。

- (void)willChangeValueForKey:(NSString *)key
{
    [super willChangeValueForKey:key];
    [self.parent willChangeValueForKey:@"children"];
}

- (void)didChangeValueForKey:(NSString *)key
{
    [super didChangeValueForKey:key];
    [self.parent didChangeValueForKey:@"children"];
}

基本上,这样做会强制父文件夹更新,因为其中一个子项已更改 希望它也适合你。