-2

キー値コーディングを利用して、小さなモデル クラスのインスタンスにデータを割り当てようとしています。

SEL selectorName = NSSelectorFromString(elementName);
if ([self.fixtureItem respondsToSelector:selectorName])
{
    [self.fixtureItem setValue:self.currentElementData forKey:elementName];
}

elementName「説明」の場合、 respondsToSelector:true を返しますがsetValue:forKey:、次のエラーが発生しNSUnknownKeyExceptionます。

キャッチされない例外 'NSUnknownKeyException' が原因でアプリを終了しています。

respondsToSelector:true を返すのにsetValue:forKey:、キー「説明」が実際には未定義であると報告するのはなぜですか?

4

2 に答える 2

3

オブジェクトはセレクターに応答しますが、最終的に呼び出される には@selector(description)応答しないためです。@selector(setDescription:)setValue:forKey:

于 2013-05-11T11:42:02.727 に答える
2

オブジェクトは実際にセレクターに応答しますがdescription(すべてのNSObject派生オブジェクトが応答するため)、説明は設定できません。description渡すセレクターは、セッター用ではなく、ゲッター用setDescription:です。

于 2013-05-11T11:42:33.490 に答える