1、NSArray *originalArray = @[@"1",@"21",@"12",@"11",@"0"];//block比較方法揽惹,數(shù)組中可以是NSInteger捆蜀,NSString(需要轉(zhuǎn)換)NSComparator finderSort = ^(idstring1,idstring2){if([string1 integerValue] >[string2 integerValue]) {return(NSComparisonResult)NSOrderedDescending;
}elseif([string1 integerValue] <[string2 integerValue]){return(NSComparisonResult)NSOrderedAscending;
}elsereturn(NSComparisonResult)NSOrderedSame;
};//數(shù)組排序:NSArray *resultArray =[originalArray sortedArrayUsingComparator:finderSort];
NSLog(@"第一種排序結(jié)果:%@",resultArray);
2研底、如果NSArray里面的不是數(shù)字畜吊,不能轉(zhuǎn)換成NSInteger,就要用字符串的比較方法了
NSArray *charArray = @[@"string 1",@"String 21",@"string 12",@"String 11",@"String 02"];
NSStringCompareOptions comparisonOptions= NSCaseInsensitiveSearch|NSNumericSearch|NSWidthInsensitiveSearch|NSForcedOrderingSearch;
NSComparator sort= ^(NSString *obj1,NSString *obj2){
NSRange range= NSMakeRange(0,obj1.length);return[obj1 compare:obj2 options:comparisonOptions range:range];
};
NSArray*resultArray2 =[charArray sortedArrayUsingComparator:sort];
NSLog(@"字符串?dāng)?shù)組排序結(jié)果%@",resultArray2);
對(duì)于NSStringCompareOptions,大家可以看看系統(tǒng)的說(shuō)明:
enum{? ? NSCaseInsensitiveSearch = 1,//不區(qū)分大小寫比較NSLiteralSearch = 2,//區(qū)分大小寫比較NSBackwardsSearch = 4,//從字符串末尾開始搜索NSAnchoredSearch = 8,//搜索限制范圍的字符串NSNumbericSearch = 64//按照字符串里的數(shù)字為依據(jù)钦铁,算出順序软舌。例如 Foo2.txt < Foo7.txt < Foo25.txt//以下定義高于 mac os 10.5 或者高于 iphone 2.0 可用,? ? NSDiacriticInsensitiveSearch = 128,//忽略 "-" 符號(hào)的比較NSWidthInsensitiveSearch = 256,//忽略字符串的長(zhǎng)度,比較出結(jié)果NSForcedOrderingSearch = 512//忽略不區(qū)分大小寫比較的選項(xiàng)牛曹,并強(qiáng)制返回 NSOrderedAscending 或者 NSOrderedDescending//以下定義高于 iphone 3.2 可用,? ? NSRegularExpressionSearch = 1024//只能應(yīng)用于 rangeOfString:..., stringByReplacingOccurrencesOfString:...和 replaceOccurrencesOfString:... 方法佛点。使用通用兼容的比較方法,如果設(shè)置此項(xiàng)躏仇,可以去掉 NSCaseInsensitiveSearch 和 NSAnchoredSearch}