0

カスタム plist があります。

     <key>Ford</key>
<dict>
    <key>name</key>
    <string>Ford</string>
    <key>color</key>
    <string>green</string>
    <key>price</key>
    <integer>45000</integer>
</dict

    <key>Toyota</key>
<dict>
    <key>name</key>
    <string>Toyota</string>
    <key>color</key>
    <string>blue</string>
    <key>price</key>
    <integer>40000</integer>
</dict

    <key>BMW</key>
<dict>
    <key>name</key>
    <string>BMW</string>
    <key>color</key>
    <string>blue</string>
    <key>price</key>
    <integer>40000</integer>
</dict>

私も持っていて、UITableViewこのplistからいくつかの車を入れています。

NSEnumerator *enumerator = [dictionary objectEnumerator];
id returnValue;
while ((returnValue = [enumerator nextObject])) 
{
    if ([[returnValue valueForKey:@"color"]isEqualToString:@"blue")
    {  
        [array addObject:[returnValue valueForKey:@"name"]];
    }

今、私のUITableView車がいっぱいになったら、価格で車を並べ替えたいと思いますNSSortDescriptor:

 NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"price" ascending:YES];
    [array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];

しかし、このコードで私のアプリはクラッシュします:reason: '[<__NSCFString 0x89a1710> valueForUndefinedKey:]: this class is not key value coding-compliant for the key price.'

なぜこれが起こるのですか?

4

1 に答える 1

1

配列を車で埋めていると言いますが、そうではありません。車の名前を入力していて、それらの名前は文字列です。エラー メッセージは、文字列に「価格」属性がないことを示しています。

于 2012-05-13T14:23:58.993 に答える