我有两个实体事件和时间。事件实体与时间实体具有一对多关系,因为每个事件可以执行多次。现在我想在 tableView 中按时间顺序显示所有事件。因此,我设置了一个 fetchedResultsController 来获取所有时间对象,根据开始时间对它们进行排序,并使用与事件对象的关系来显示事件信息。到目前为止,一切都很好。但现在,如果用户在表中选择一个条目,我会将一个事件对象传递到可以编辑事件的detailViewController。
问题是现在只有事件实体被标记为已更新。我通过查看 NSManagedObjectDidChange 通知的 userInfo 目录发现了这一点。因此,由于没有更改时间对象,因此 FRC 上的委托方法不会被触发。
如何手动将时间对象标记为已更改以使 FRC 识别更改并相应地更新单元格?我尝试触发 KVO 方法willChangeValueForKey
and didChangeValueForKey
但到目前为止还没有奏效。
多谢
托马斯
我的模型有点不同,但它可以很容易地转换为您的模型。
我得到了一个树状结构:
- Element
- Folder : Element
- 文件:元素
添加或删除文件时,只有队列中的第一个文件夹会收到有关此更改的通知。当文件标题更改时,不会有任何文件夹收到通知。那么该怎么办?
我尝试在 Element 类中覆盖 -willChangeValueForKey: 和 -didChangeValueForKey: 。
- (void)willChangeValueForKey:(NSString *)key
{
[super willChangeValueForKey:key];
[self.parent willChangeValueForKey:@"children"];
}
- (void)didChangeValueForKey:(NSString *)key
{
[super didChangeValueForKey:key];
[self.parent didChangeValueForKey:@"children"];
}
基本上,这样做是强制父文件夹更新,因为它的子文件夹之一发生了更改。
希望它也适合你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)