//第一個參數是要進行比較的字符串, 第二個參數是比較的方法, 是一個枚舉的類型 - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
枚舉的值: NSStringCompareOptions數組
enum{ NSCaseInsensitiveSearch = 1,//不區分大小寫比較 NSLiteralSearch = 2,//區分大小寫比較 NSBackwardsSearch = 4,//從字符串末尾開始搜索 NSAnchoredSearch = 8,//搜索限制範圍的字符串 NSNumbericSearch = 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 }
NSArray *originalArray = @[@"dfg", @"dfa", @"gde", @"mgc", @"faa"]; /// 方法1: sortedArrayUsingComparator NSArray *result1 = [originalArray sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { NSComparisonResult result; result = [obj1 compare:obj2 options:NSLiteralSearch]; return result; }]; NSLog(@"result1 = %@", result1); /// 方法2: sortedArrayUsingFunction: 參數是一個C語言函數的函數指針. // NSArray *result2 = [originalArray sortedArrayUsingFunction:(nonnull NSInteger (*)(id _Nonnull __strong, id _Nonnull __strong, void * _Nullable)) context:nil] // 方法3: sortUsingDescriptors //其中,price爲數組中的對象的屬性,這個針對數組中存放對象比較更簡潔方便 // NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES]; // NSArray *result3 = [originalArray sortedArrayUsingDescriptors:@[sortDescriptor]]; // 方法4: sortUsing NSArray *result4 = [originalArray sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"result4 = %@", result4); /* //自定義排序方法 -(NSComparisonResult)comparePerson:(Person *)person{ //默認按年齡排序 NSComparisonResult result = [[NSNumber numberWithInt:person.age] compare:[NSNumber numberWithInt:self.age]];//注意:基本數據類型要進行數據轉換 //若是年齡同樣,就按照名字排序 if (result == NSOrderedSame) { result = [self.name compare:person.name]; } return result; } */