假设我有两个实体,Employee
和Department
.一个部门与一个员工有一对多的关系,每个部门可以有多个员工,但每个员工只属于一个部门.我希望使用ANNSFetchedResultsController
在表视图中显示所有员工,该表视图按数据排序,该数据是员工所属部门的属性.问题是,我希望我的表在部门对象接收更改时更新,就像在Employee的常规属性更改时一样,但是NSFetchedResultsController
似乎不跟踪相关对象.我通过以下操作部分通过了这个问题:
for (Employee* employee in department.employees) {
[employee willChangeValueForKey:@"dept"];
}
/* Make Changes to department object */
for (Employee* employee in department.employees) {
[employee didChangeValueForKey:@"dept"];
}
这显然不理想,但它确实会导致调用基于Employee的FRC委托方法didChangeObject.我现在留下的真正问题是对跟踪Employee对象的FRC进行排序:
NSEntityDescription *employee = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:self.managedObjectContext];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"department.someProperty" ascending:NO];
这非常有效,并且在第一次调用时就正确地对员工进行了排序,问题是,当我更改某个部门的某些属性时,如果该属性应该更改EMPLOYEE表的排序,则没有任何react .有没有什么好方法可以让我的员工FRC跟踪一段关系中的变化?特别是,当排序基于相关属性时,我只需要一些方法来让它更新排序.我看过一些类似的问题,但没有找到令人满意的解决方案.