0

NSSortDescriptordistance小于 10.0时订购不正确。

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

// 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
        },
    )
4

1 回答 1

1

我不认为这里的问题是该值小于 10。您的值似乎是字符串,并且是按字符排序的。“8”在“4”之后,所以它是稍后订购的。

如果您将字符串值转换为 NSNumbers,它们应该正确排序。

于 2013-05-02T15:39:14.523 回答