iOS 数组排序sortedArrayUsingComparator


    // 数组的排序
    // 定义一个数组数组
    NSArray *array = @[@(3),@(5),@(4),@(2),@(1)];
    // 对数组进行排序(升序)
    NSArray *resultAscending = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        NSLog(@"%@ ~ %@", obj1, obj2);
        return [obj1 compare:obj2];
    }];
    NSLog(@"对数组进行排序(正序):%@", resultAscending);
    // 对数组进行排序(降序)
    NSArray *resultDescending = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        NSLog(@"%@ ~ %@", obj1, obj2);
        return [obj2 compare:obj1];
    }];
    NSLog(@"对数组进行排序(降序):%@", resultDescending);
    // 对数组进行排序(乱序)
    NSArray *resultBreak = [resultAscending sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        NSLog(@"%@ ~ %@", obj1, obj2);
        if (arc4random_uniform(2) == 0) { // arc4random_uniform会随机返回一个0到上界之间(不含上界)的整数。以2为上界会得到0或1,像投硬币一样
            return [obj2 compare:obj1];// descending
        } else {
            return [obj1 compare:obj2];// ascending
        }
    }];
    NSLog(@"对数组进行排序(乱序):%@", resultBreak);




打印




    // 版本号比较
    NSString *num1 = @"5.2.7";
    NSString *num2 = @"5.3.6";
    if ([num1 compare:num2 options:NSNumericSearch] == NSOrderedDescending) {
        NSLog(@"%@ is bigger",num1);
    } else {
        NSLog(@"%@ is bigger",num2);
    }
    /*
     注意:
     - (NSComparisonResult)compare:(NSString *)string;
     - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
     - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare;
     - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare locale:(nullable id)locale;
     
     1.options:(NSStringCompareOptions)mask 是枚举值
     typedef NS_OPTIONS(NSUInteger, NSStringCompareOptions) {
     NSCaseInsensitiveSearch = 1, 不区分大小写比较
     NSLiteralSearch = 2, 区分大小写比较
     NSBackwardsSearch = 4, 从字符串末尾开始搜索
     NSAnchoredSearch = 8, 搜索限制范围的字符串
     NSNumericSearch = 64, 按照字符串里的数字为依据,算出顺序。例如 Foo2.txt < Foo7.txt < Foo25.txt
     // 以下定义高于 mac os 10.5 或者高于 iphone 2.0 可用
     NSDiacriticInsensitiveSearch = 128, 忽略 "-" 符号的比较
     NSWidthInsensitiveSearch = 256, 忽略字符串的长度,比较出结果
     NSForcedOrderingSearch = 512, 忽略不区分大小写比较的选项,并强制返回 NSOrderedAscending 或者 NSOrderedDescending
     // 以下定义高于 iphone 3.2 可用
     NSRegularExpressionSearch = 1024, 只能应用于 rangeOfString:..., stringByReplacingOccurrencesOfString:...和 replaceOccurrencesOfString:... 方法。使用通用兼容的比较方法,如果设置此项,可以去掉 NSCaseInsensitiveSearch 和 NSAnchoredSearch
     };
     
     2.range:(NSRange)
     比较字符串的范围
     结构变量:
     location: 需要比较的字串起始位置(以0为起始)
     length: 需要比较的字串长度
     
     3.返回值
     typedef enum _NSComparisonResult {
     NSOrderedAscending = -1,    // < 升序
     NSOrderedSame,              // = 等于
     NSOrderedDescending   // > 降序
     } NSComparisonResult;
     
     */

打印结果




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值