これが重複している場合はお詫びします。20分間の検索では、この正確な状況または解決策は得られませんでした。
XClass
、、、の3つのクラスを持つCoreDataスタックがYClass
ありZClass
ます。XClass
と1対多の関係がありYClass
ます。YClass
と1対多の関係がありZClass
ます。
のインスタンスを使用して、少なくとも1つに少なくとも1つNSFetchedResultsController
のインスタンスがあるすべてのインスタンスをフェッチしようとしています。XClass
YClass
ZClass
私の述語は次のように定義されています。
// ...stuff
NSFetchRequest * fetchRequest = [NSFetchRequest new];
NSEntityDescription * entity = [NSEntityDescription entityForName:NSStringFromClass([XClass class])
inManagedObjectContext:managedObjectContext];
fetchRequest.entity = entity;
fetchRequest.predicate =
[NSPredicate predicateWithFormat:@"0 < SUBQUERY(yObjects, $y, $y.zObjects.@count > 0).@count"];
// ..instantiate NSFetchedResultsController and perform fetch
これにより、次のメッセージで致命的な例外が発生します。Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Keypath containing KVC aggregate where there shouldn't be one; failed to handle $y.zObjects.@count'
YObject
他の場所では、述語を使用してインスタンスを正常にフェッチしました[NSPredicate predicateWithFormat:@"zObjects.@count > 0"];
誰かが私が間違っていることを指摘できますか?どうもありがとうございました。