ios - sortedArrayUsingComparators 不按升序对数字进行排序

标签 ios sorting nsstring nsmutablearray

所以这可能真的很简单,但我遇到了 sortedArrayUsingComparators 方法的问题。我正在尝试对仅包含数字的 NSString 数组进行排序。例如,我有一个字符串数组: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;
    }
}];

谢谢!

最佳答案

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

假设 tmp 是一个 NSArray 然后尝试

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

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

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

如果 tmp 是一个 NSMutableArray 然后尝试 -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;
    }
}];

关于ios - sortedArrayUsingComparators 不按升序对数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862027/

相关文章:

ios - XCode5 模拟器 : unknown option character `X' in: -Xlinker

ios - 如何使用自动布局将 UITextField 重新定位到特定位置

ios - NSFetchedResultsController 对非常大的核心数据数据库的响应不那么灵敏

java - 冒泡排序再次返回相同的数组?

java - 使用泛型列表进行快速排序时索引越界异常

iphone - Objective-C 将 NSData 转换为 NSString

ios - 地理围栏 (CLCircularRegion) 和 iBeacons (CLBeaconRegion) 是否共享 20 个限制?

objective-c - NSString 和 Swift.String 上的 ReplaceCharactersInRange 之间有区别吗

ios - 从 NSString 中删除 WYSIWYG 编辑器标记

javascript用不同的单位对距离进行排序