NSSortDescriptor
Core Data 対多関係を使用する場合、エンティティとの 1 対多関係にあるエンティティ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 の変更について言及されていないにもかかわらず、なぜこれが起こっているのか、なぜ両方に違いがあるのか 、誰も手がかりを持っていますか.