我知道您可以观察到使用@ObservedObject获取的实体的变化。
这个问题最好用一个例子来说明:如果我有一个实体学校,与学生有一对多的关系,并且每个学生都有一个属性numberOfPencils,那么每当学校中的一个学生改变他的numberOfPencils属性时,我想重新计算学校中所有铅笔的总和。
如果我通过schools实体(是一个@ObservedObject)访问所有学生,那么只有在添加了新学生时,我才能得到对总和的更新,而在现有学生更改其numberOfPencils时,我就不会得到更新,因为据我所知,只能逐个观察学生对象。
我能想到的唯一方法是设置一个带有fetchRequestPredicate的NSFetchedResultsControllerDelegate,通过唯一标识学校的keyPath从学生到学校获取与学校关联的所有学生,但这似乎是一个很糟糕的方法,肯定有更好的解决方案,但我一直没有找到。
基本上,我想得到通知的变化,任何学生与学校。
1条答案
按热度按时间yhived7q1#
派生属性无疑是一个很好的方法。
但澄清一下:@ObservedObject也可以在项目更改时更新。您只需使用
objectWillChange.send()
手动触发更新假设您的
School
单元格如下所示:那么
Pupil
修改将像这样工作:尽管
SchoolCell
是一个自己的结构体,但这一点很重要,因此当它的@ObservedObject学校发生变化时,它会被刷新。