1.降序
NSArray *tMlist = @[@4,@5,@2,@6,@3,@7,@8];
//降序序8,7,。。
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];
//結果:升序2,4,。。
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)。