sortedArrayUsingComparator詳解

1.降序

 NSArray *tMlist = @[@4,@5,@2,@6,@3,@7,@8];
 //降序序87,。。
 NSArray *tArray = [tMlist sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2)
                    {
                        NSNumber *tNumber1 = (NSNumber *)obj1;
                        NSNumber *tNumber2 = (NSNumber *)obj2;
                        //因爲不滿足sortedArrayUsingComparator方法的默認排序順序,則需要交換
                         if ([tNumber1 integerValue] < [tNumber2 integerValue])
                             return NSOrderedDescending;
                         return NSOrderedAscending;
                         //因爲滿足sortedArrayUsingComparator方法的默認排序順序,則不需要交換
                        if ([tNumber1 integerValue] > [tNumber2 integerValue])
                             return NSOrderedAscending;
                         return NSOrderedDescending;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2 升序

 NSArray *tMlist = @[@4,@5,@2,@6,@3,@7,@8];
 //結果:升序24,。。
 NSArray *tArray = [tMlist sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2)
                    {
                        NSNumber *tNumber1 = (NSNumber *)obj1;
                        NSNumber *tNumber2 = (NSNumber *)obj2;
                         //因爲滿足sortedArrayUsingComparator方法的默認排序順序,則不需要交換
                        if ([tNumber1 integerValue] < [tNumber2 integerValue])
                            return NSOrderedAscending;
                        return NSOrderedDescending;
                        // 因爲不滿足sortedArrayUsingComparator方法的默認排序順序,則需要交換。
                        // if ([tNumber1 integerValue] < [tNumber2 integerValue])
                        //       return   NSOrderedAscending ;
                        //   return NSOrderedDescending;

                    }];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3 數組逆轉

NSArray *tMlist = @[@4,@5,@2,@6,@3,@7,@8];
 NSArray *tArray = [tMlist sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2)
                    {
                        NSNumber *tNumber1 = (NSNumber *)obj1;
                        NSNumber *tNumber2 = (NSNumber *)obj2;

                        //數組逆轉
                        return NSOrderedDescending;
                    }];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.數組不變

NSArray *tMlist = @[@4,@5,@2,@6,@3,@7,@8];
 NSArray *tArray = [tMlist sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2)
                    {
                        NSNumber *tNumber1 = (NSNumber *)obj1;
                        NSNumber *tNumber2 = (NSNumber *)obj2;
                        //數組不變
                         return NSOrderedAscending;
                    }];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

總結:

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)。

(function () { ('pre.prettyprint code').each(function () { var lines = (this).text().split(\n).length;var numbering = $('
    ').addClass('pre-numbering').hide(); (this).addClass(hasnumbering).parent().append( numbering); for (i = 1; i
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章