在使用 Core Data 的多对关系时,这是一个长期存在的问题,很难根据与实体的一对多关系的数量对实体上NSSortDescriptor
的获取请求进行排序。这在与 a 结合使用时特别有用。通常将排序描述符初始化为:Parent
children
Child
NSFetchedResultsController
NSSortDescriptor *sortByNumberOfChildren = [[NSSortDescriptor alloc] initWithKey:@"children.@count" ascending:NO];
导致异常'Keypath containing KVC aggregate where there shouldn't be one; failed to handle children.@count
在iOS 6.1上,我通过将 KVO 访问器-countOf<Key>
作为属性添加到我的托管对象模型作为整数类型发现了一个修复。我没有在我的NSManagedObject
子类中为这个属性实现任何东西,因为所有的魔法似乎都发生在幕后。(见https://stackoverflow.com/a/15546371/2042527)。
但是,这在iOS 6.0上不起作用。在这里,我发现将以下方法添加到您的NSManagedObject
子类可以解决问题:
- (NSUInteger)countOfChildren{
return [self.children count];
}
添加两者并不能解决两个 SDK 中的问题。相反,它破坏了修复。
有没有人知道为什么会发生这种情况以及为什么两者之间存在差异,尽管没有提到 iOS 6.0 和 iOS 6.1 之间对 Core Data 或 Foundation 的更改。