我有一个由 NSFetchedResultsController 管理的 tableview。
我的问题是我正在尝试根据计算值过滤数据,该计算值需要查看核心数据实体上的相关值。
进一步说明:我有一个名为“Task”的核心数据实体,以及一个名为“TaskActions”的一对多关系。
我想通过查看操作并使用一些自定义逻辑来对任务表视图进行排序。
问题是我真的不知道如何最好地实现这一点。
这是我尝试过的:
NSFetchRequest *requestForAll = [[NSFetchRequest alloc] initWithEntityName:@"Task"];
NSPredicate *actionPredicate = [NSPredicate predicateWithFormat:@"taskActionPerformed == %@",@YES];
requestForAll.predicate = actionPredicate;
[self setFetchedResultsController:[[NSFetchedResultsController alloc] initWithFetchRequest:requestForAll managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil]];
我可以通过将属性“taskActionPerformed”放在实体上并覆盖 getter 值来完成此“过滤”工作,如下所示:
- (NSNumber*)taskActionPerformed
{
for (TaskActions *action in self.actions)
{
//Perform Logic
return @YES;
}
return @NO;
}
但是,我读过不鼓励,甚至不推荐重写 KVO 方法(就像我正在使用 getter 一样)。
此外,上述解决方案仅在我保留数据之前有效。保存数据后,不调用 taskActionPerformed 并且不加载 fetchedresultscontroller。
我真的很想知道解决这个一般问题的最佳方法。