ios排序(物件排序,字母,數字)
阿新 • • 發佈:2019-02-18
轉自:http://my.oschina.net/panyong/blog/223260
工作中從伺服器上面取到了很多資料,需要對他們進行一下排序,IOS中系統就定義好了排序的方法,但是一定要會用,不然很煩躁的,我在這裡就吃過虧,下面介紹三種常見的排序
第一種是物件排序
下面的物件我設定為一個uitext控制元件的Y值
// 4.對所有的文字框控制元件進行排序
[_fields sortUsingComparator:^NSComparisonResult(UITextField *obj1, UITextField *obj2) {
/*
NSOrderedAscending = -1 L, // 右邊的物件排後面
NSOrderedSame, // 一樣
NSOrderedDescending // 左邊的物件排後面
*/
CGFloat obj1Y = obj1.frame.origin.y;
CGFloat obj2Y = obj2.frame.origin.y;
if (obj1Y > obj2Y) { // obj1排後面
return NSOrderedDescending;
} else { // obj1排前面
return NSOrderedAscending;
}
}];
第二種我設定為數字
NSArray *array = @[ @1 , @20, @3 , @10, @2];
// sortedArrayUsingComparator:方法並不會改變array陣列內部的順序
// sortedArrayUsingComparator:方法會返回一個新的已經排好序的陣列
NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *obj1, NSNumber *obj2) {
if ([obj1 intValue] < [obj2 intValue]) {
return NSOrderedDescending;
} else {
return NSOrderedAscending;
}
}];
NSLog(@"%@", sortedArray);
第三種為字母
NSArray *kArrSort = [_dic allKeys]; //這裡是字母陣列:,g,a,b.y,m……
NSArray *resultkArrSort = [kArrSort sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2 options:NSNumericSearch];
}];
NSLog(@"%@",resultkArrSort);
好了,值得注意的是塊程式碼中的id obj1.他們都是表示比較大小時,兩個比較的物件,也就是你的陣列中的物件哦!
希望能幫到讀者,以及自己,共同學習哦!