2

私はCocoa Programming for Mac OS X (4th Edition)に取り組んでいますが、他の多くの人と同じように、私は挑戦に行き詰まっています。具体的には、第 8 章、課題 1 です。自分で解決策にたどり着くことができなかったので、Life as Clay ブログから少し助けを得ました。そこにソリューションを追加しましたが、次のエラーが発生します。

2013-05-09 00:28:49.049 RaiseMan[58078:303] Error setting value for key path sortDescriptors of object <NSArrayController: 0x7fcee2a51900>[object class: RMPerson, number of selected objects: 1] (from bound object <NSTableView: 0x7fcee2a48750>): [<RMPerson 0x7fcee1c5c870> valueForUndefinedKey:]: this class is not key value coding-compliant for the key [personName valueForKeyPath:@"length"].

問題は、何が問題なのかを突き止めようとしているときに、このエラーが StackOverflow のいたるところで発生するのを見てきましたが、それが私のプロジェクトについてどのような情報を伝えようとしているのかをまだ識別していないことです。このエラー メッセージを理解するためのソリューション間の相関関係を見つけることができないため、コードで何が起こっているのかを理解するために使用することはできません。

要するに、私は自分のコードの具体的な問題について助けを求めているわけではなく、このエラー メッセージが実際に何を意味するのかを調べようとしているので、自分で問題を突き止めることができます。ただし、とにかくやろうとしていることは次のとおりです。何が問題なのかだけでなく、なぜこのエラーが私がしていることに当てはまるのかを教えていただければ、それは素晴らしいことです.

この特定の例では、ArrayController にバインドされた TableView があります。ArrayController は、employees(NSMutableArray) をモデル キー パスとして使用して、ファイルの所有者にバインドされます。employeesオブジェクトの配列で、それぞれに(NSString) と(float)のRMPerson2 つのプロパティがあります。表の最初の列は、それぞれの; チャレンジに従って、長さを使用して最初の列をソートしようとしています。ソートキーとセレクターを使ってソートすると、すべてうまくいきます。このエラーは、またはのいずれかをソート キーおよびセレクターとして使用すると発生します。personNameexpectedRaisepersonNameRMPersonpersonNamepersonNamecaseInsensitiveCompare:[personName valueForKeyPath:@"length"]personName.lengthcompare:

4

3 に答える 3

0

これは、キーによってオブジェクトの値にアクセス/設定しようとしているが、キーと値のペアがないことを意味します。

あなたの場合、NSMutableArray の値をそのキーで設定しようとしていますが、これは不可能です。

于 2013-05-09T05:02:01.387 に答える
0

そのため、プロジェクトに存在しないIBOutlet変数名でこの「クラスは値に準拠していません」という奇妙なエラーが見つかった場合は、アプリを削除してシミュレーターに再インストールしてください。私のために働いた!

于 2016-12-30T13:04:35.637 に答える