How to sort numbers in array from low to high

北战南征 提交于 2019-12-10 15:25:46

问题


I am trying to sort an array of prices from low to high. I have it working but not the way I want it to. Long story short, the sorter is putting numbers in order like this: 100 10900 200 290

instead of sorting like this

100 200 290 10900

here is my code I am doing this with.

-(void)filterPriceLowHigh {
    NSSortDescriptor *sortDescriptor;
    sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"ListPrice"
        ascending:YES] autorelease];
    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
    NSArray *sortedArray;
    sortedArray = [app.vehiclesArrayToDisplay
        sortedArrayUsingDescriptors:sortDescriptors];
    [app.vehiclesArrayToDisplay removeAllObjects];
    [app.vehiclesArrayToDisplay addObjectsFromArray:sortedArray];
}

Could someone tell me what I need to do here? thanks in advance.


回答1:


Create the sort descriptor like this:

sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"ListPrice"
                                               ascending:YES
                                              comparator:^(id obj1, id obj2) {
    return [obj1 compare:obj2 options:NSNumericSearch];
}];



回答2:


You need to convert your NSString's to NSNumbers first. Look at the documentation for NSNumberFormatter and the instance method numberFromString.



来源:https://stackoverflow.com/questions/4550383/how-to-sort-numbers-in-array-from-low-to-high

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!