sortedArrayUsingComparator

来源:互联网 发布:37大闹天宫进阶数据 编辑:程序博客网 时间:2024/05/13 17:26

1.升序

NSArray *tMlist = @[@4,@5,@2,@6,@3,@7,@8,@3];NSArray *tArray = [tMlist sortedArrayUsingComparator:^NSComparisonResult(NSNumber*  _Nonnull obj1, NSNumber*  _Nonnull obj2) {    NSComparisonResult result = [obj1 compare:obj2];    if (result == NSOrderedAscending) { //比较结果 1 < 2 升序,不需要换位        return NSOrderedAscending;    }else if (result == NSOrderedDescending) { //比较结果 1 > 2 降序,需要换位        return NSOrderedDescending;    }else {        return NSOrderedSame;    }}];

2.降序

NSArray *tMlist = @[@4,@5,@2,@6,@3,@7,@8,@3];NSArray *tArray = [tMlist sortedArrayUsingComparator:^NSComparisonResult(NSNumber*  _Nonnull obj1, NSNumber*  _Nonnull obj2) {    NSComparisonResult result = [obj1 compare:obj2];    if (result == NSOrderedAscending) { //比较结果 1 < 2 升序,需要换位        return NSOrderedDescending;    }else if (result == NSOrderedDescending) { //比较结果 1 > 2 降序,不需要换位        return NSOrderedAscending;    }else {        return NSOrderedSame;    }}];

3.数组逆转

NSArray *tMlist = @[@4,@5,@2,@6,@3,@7,@8,@3];NSArray *tArray = [tMlist sortedArrayUsingComparator:^NSComparisonResult(NSNumber*  _Nonnull obj1, NSNumber*  _Nonnull obj2) {    return NSOrderedDescending; //不管比较结果如何,始终换位}];

4.数组不变

NSArray *tMlist = @[@4,@5,@2,@6,@3,@7,@8,@3];NSArray *tArray = [tMlist sortedArrayUsingComparator:^NSComparisonResult(NSNumber*  _Nonnull obj1, NSNumber*  _Nonnull obj2) {    return NSOrderedAscending; //不管比较结果如何,始终不换位}];

5.总结

1.sortedArrayUsingComparator这个方法本身就是按递增的方式排序。2.返回的返回值(NSOrderedAscending 不交换,NSOrderedSame 不交换,NSOrderedDescending 交换)。例如:object1 < object2 返回:NSOrderedDescending 则交换(变为object2,object1)。以保证按方法本身升序,返回NSOrderedAscending,两者不交换。

对于Comparator的返回值文档有下面的说明

  • NSOrderedAscending

    • The left operand is smaller than the right operand.
  • NSOrderedSame

    • The two operands are equal.
  • NSOrderedDescending

    • The left operand is greater than the right operand

如果你期望的是值小的在前而值大的在后(升序),则可以在比较的时候返回NSOrderedAscending(-1),否则,就是NSOrderedDescending(1)。

原创粉丝点击