iOS 数组排序sortedArrayUsingComparator - Go语言中文社区

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;
     
     */

打印结果




版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/JXT141014_150214/article/details/78179657
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 18:42:59
  • 阅读 ( 981 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢