NSSortDescriptor订单值小于10.0

时间:2013-05-02 15:36:41

标签: objective-c

NSSortDescriptor小于10.0时,

distance订购不正确。

代码(按距离排序的数组):

// Order Array by Distance (Distance = NSString)
NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"distance" ascending:YES];
[_contentData sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];

正确订购(当距离值> 10.0时):

    (
            {
            distance = "11.256649";
        },
            {
           distance = "257.428821";
        },
            {
            distance = "4534.256851";
        }
    )

错误的排序(当任何距离值<10.0时):

    (
            {
           distance = "252.428821";
        },
            {
            distance = "4514.256851";
        }
            {
            distance = "8.362996"; // Wrong ordering when distance < 10.0
        },
    )

1 个答案:

答案 0 :(得分:1)

我不认为这里的问题是该值小于10.看起来您的值是字符串,并且逐个字符地排序。 “8”在“4”之后出现,所以它稍后会被订购。

如果将字符串值转换为NSNumbers,则应正确排序。