2

KVCを使用して、Coreデータを使用して構築されたカスタムNSManagedObjectエンティティのプロパティの値を取得しようとしています。数レベルの深さのプロパティにアクセスしようとすると、UnknownKeyExceptionが発生します。私の人生では、その理由がわかりません...

ルートエンティティは「キャッチ」と呼ばれます。重量、長さなど、いくつかのプロパティがあります。また、「種」と呼ばれる別のエンティティと1対1の関係があります。種には、NSStringとして定義されたnameプロパティがあります。

それで:

//this will output the species name (i.e. "Brook Trout")
NSLog(@"Catch.species.name = %@", catch.species.name);

//this will throw a NSUnknownKeyException
NSLog(@"Catch.species.name = %@", [catch valueForKey:@"species.name"]);

//but this works...!?
Species *species = (Species*)[catch valueForKey:@"species"];
NSLog(@"Species.name = %@", species.name);

具体的な例外の詳細は次のとおりです。

*キャッチされなかった例外'NSUnknownKeyException'が原因でアプリを終了しています。理由:'[valueForUndefinedKey:]:エンティティCatchは、キー"species.name"のキー値コーディングに準拠していません。

私よりもこのことをよく理解している人は、何が起こっているのか知っていますか?

前もって感謝します!

4

1 に答える 1

8

この場合、キーのチェーン、つまり「species.name」の-valueForKeyPath:代わりに使用してみてください。-valueForKey:

于 2012-06-12T18:42:51.603 に答える