使用NSSortDescriptor排序数组不起作用

Cha*_*iya 1 sorting objective-c nsmutablearray nssortdescriptor ios

我有一个包含多个字典的数组:

 {
    highRate = "600.49";
    hotelId = 439607;
    hotelRating = "2.5";
    latitude = "12.97153";
    longitude = "80.15096";
    lowRate = "600.49";
    name = "Hotel Kingss Park";
    proximityDistance = "17.999475";
    thumbNailUrl = "http://images.travelnow.com/hotels/7000000/6510000/6500300/6500296/6500296_3_t.jpg";
    tripAdvisorRating = "4.0";
},
    {
    highRate = "990.0";
    hotelId = 327929;
    hotelRating = "2.0";
    latitude = "13.06931";
    longitude = "80.2706";
    lowRate = "450.45";
    name = "Mallika Residency";
    proximityDistance = "1.6274245";
    thumbNailUrl = "http://images.travelnow.com/hotels/3000000/2960000/2958400/2958303/2958303_2_t.jpg";
    tripAdvisorRating = "2.5";
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用lowRate键对此数组进行排序.

NSSortDescriptor *rating_Sort = [NSSortDescriptor sortDescriptorWithKey:@"lowRate" ascending:NO];
NSArray *descriptorArray = [NSArray arrayWithObject:rating_Sort];

NSArray *sortedArray = [self.tblDisplayArray sortedArrayUsingDescriptors:descriptorArray];
Run Code Online (Sandbox Code Playgroud)

这里self.tblDisplayArray是我的数组.

但是没有在Result中获得正确的排序数组.

为什么会这样?

Geo*_*een 5

它们都是字符串,所以它试图按字母顺序排序,而不是数字排序.尝试:

NSSortDescriptor *desc = [[NSSortDescriptor alloc]initWithKey:@"doubleValue" ascending:YES];
Run Code Online (Sandbox Code Playgroud)

或使用NSNumbers代替NSString ... @()而不是@"".

@Rajesh是正确的,并非你的所有数字都是整数所以你应该使用doubleValue,我已经更新了代码!

希望这可以帮助!:)