1. 程式人生 > >ios排序(物件排序,字母,數字)

ios排序(物件排序,字母,數字)

轉自: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.他們都是表示比較大小時,兩個比較的物件,也就是你的陣列中的物件哦! 
希望能幫到讀者,以及自己,共同學習哦!