假设我有一个父实体,每个实体都有许多子节点。我想让所有的父母按孩子的数量排序。类似于以下伪代码的东西:
NSEntityDescription * entity = [NSEntityDescription entityForName:@"Parent" inManagedObjectContext:managedObjectContext];
[[NSSortDescriptor alloc] initWithKey:@"children.count" ascending:NO];
//Execute request
有没有办法使用核心数据构建这样的抓取?如果无法做到这一点,那么使用sortedArrayUsingSelector:
进行排序会失去_PFBatchFaultingArray批量大小的好处吗?
谢谢, 本
答案 0 :(得分:5)
您的查询可行,但(假设children
出现故障)将使用children
属性上的键值编码方法,这反过来会触发错误(请参阅the NSManagedObject docs一系列触发故障的方法,以及对此行为的讨论),因此您将失去批处理和故障的性能优势。
如果您的情况可行,您可以考虑在父实体(称为childrenCount
)上维护一个派生属性,该属性反映与父项相关的子项数。这不是最干净的解决方案,但如果你将它作为NSNumber保留在父实体中,即使children
出现故障也可以访问它,并且你可以直接对它进行排序。