sortedArrayUsingComparators未按升序排序数字

时间:2015-08-06 17:22:18

标签: ios sorting nsstring nsmutablearray

所以这可能非常简单,但我遇到了sortedArrayUsingComparators方法的问题。我试图对只包含数字的NSStrings数组进行排序。例如,我有一个字符串数组:0,1,2,3,4,5,6,7,10,8,9,11,12。当我使用我的代码运行它时,我没有得到排序结果。事实上,我不认为数组会改变顺序。有人可以帮助我解决我在这里做错的事吗?

以下是代码段:

[tmp sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {

    NSInteger first = obj1.integerValue;
    NSInteger second = obj2.integerValue;

    if (first < second)
    {
        return NSOrderedAscending;
    }
    else {
        return NSOrderedDescending;
    }
}];

谢谢!

1 个答案:

答案 0 :(得分:3)

tmp的值不会改变,返回一个新的排序数组。

假设tmpNSArray,请尝试

tmp = [tmp sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {

    NSInteger first = obj1.integerValue;
    NSInteger second = obj2.integerValue;

    if (first < second)
    {
        return NSOrderedAscending;
    }
    else {
        return NSOrderedDescending;
    }
}];

如果tmpNSMutableArray,请尝试-sortUsingComparator:而不是-sortedArrayUsingComparator:

[tmp sortUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {

    NSInteger first = obj1.integerValue;
    NSInteger second = obj2.integerValue;

    if (first < second)
    {
        return NSOrderedAscending;
    }
    else {
        return NSOrderedDescending;
    }
}];