NSSortDescriptor不对值进行排序

时间:2012-05-13 14:18:07

标签: iphone objective-c xcode ipad nssortdescriptor

我有一个自定义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.'

为什么会这样?

1 个答案:

答案 0 :(得分:1)

你说你用汽车填充你的阵列,但你不是。你正在填写汽车的名称,这些名称是字符串。错误消息告诉您字符串没有“price”属性。