iOS_字典數組 按key分組和排序

來源:互聯網
上載者:User

標籤:ios   數組   排序   字典   分組   

////  main.m//  SortGroup////  Created by beyond on 14-10-26.//  Copyright (c) 2014年 beyond.com All rights reserved.//  按GroupTag分組和 按Order欄位排序 enabled表示不啟用#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {    @autoreleasepool {        // 1.定義一個測試的字典數組        NSMutableArray *dictArray = @[                                      @{                                          @"FEnabled" : [NSNumber numberWithInt:1],                                          @"FGroupTag" : [NSNumber numberWithInt:0],                                          @"FOrder" : [NSNumber numberWithInt:0],                                          @"FName" : @"寶玉"                                          },                                      @{                                          @"FEnabled" : [NSNumber numberWithInt:1],                                          @"FGroupTag" : [NSNumber numberWithInt:1],                                          @"FOrder" : [NSNumber numberWithInt:0],                                          @"FName" : @"黛玉"                                          },                                      @{                                          @"FEnabled" : [NSNumber numberWithInt:0],                                          @"FGroupTag" : [NSNumber numberWithInt:1],                                          @"FOrder" : [NSNumber numberWithInt:1],                                          @"FName" : @"寶釵"                                          },                                      @{                                          @"FEnabled" : [NSNumber numberWithInt:1],                                          @"FGroupTag" : [NSNumber numberWithInt:1],                                          @"FOrder" : [NSNumber numberWithInt:2],                                          @"FName" : @"湘雲"                                          },                                      @{                                          @"FEnabled" : [NSNumber numberWithInt:1],                                          @"FGroupTag" : [NSNumber numberWithInt:2],                                          @"FOrder" : [NSNumber numberWithInt:0],                                          @"FName" : @"妙玉"                                          },                                      @{                                          @"FEnabled" : [NSNumber numberWithInt:1],                                          @"FGroupTag" : [NSNumber numberWithInt:3],                                          @"FOrder" : [NSNumber numberWithInt:0],                                          @"FName" : @"晴雯"                                          },                                      @{                                          @"FEnabled" : [NSNumber numberWithInt:1],                                          @"FGroupTag" : [NSNumber numberWithInt:3],                                          @"FOrder" : [NSNumber numberWithInt:1],                                          @"FName" : @"襲人"                                          }                                                                            ];        // NSArray 轉成 NSMutableArray        // 0、對於不啟用的,即enabled為0的字典模型,刪除掉        NSMutableArray *dictArr = [NSMutableArray array];        for (int i = 0; i < dictArray.count; i++) {            NSDictionary *dict = dictArray[i];            if ([[dict objectForKey:@"FEnabled"]intValue] == 1) {                [dictArr addObject:dict];            }        }        // NSLog(@"清除未啟用的字典後的數組:%@",dictArr);                // 1、對數組按GroupTag排序        NSArray *sortDesc = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"FGroupTag" ascending:YES]];        NSArray *sortedArr = [dictArr sortedArrayUsingDescriptors:sortDesc];        // NSLog(@"排序後的數組:%@",sortedArr);                        // 2、對數組進行分組,按GroupTag        // 遍曆,建立組數組,組數組中的每一個元素是一個模型數組        NSMutableArray *_groupArr = [NSMutableArray array];        NSMutableArray *currentArr = [NSMutableArray array];        NSLog(@"class--%@",[currentArr class]);        // 因為肯定有一個字典返回,先添加一個        [currentArr addObject:sortedArr[0]];        [_groupArr addObject:currentArr];        // 如果不止一個,才要動畫添加        if(sortedArr.count > 1){            for (int i = 1; i < sortedArr.count; i++) {                // 先取出組數組中  上一個模型數組的第一個字典模型的groupID                NSMutableArray *preModelArr = [_groupArr objectAtIndex:_groupArr.count-1];                int preGroupID = [[[preModelArr objectAtIndex:0] objectForKey:@"FGroupTag"] intValue];                // 取出當前字典,根據groupID比較,如果相同則添加到同一個模型數組;如果不相同,說明不是同一個組的                NSDictionary *currentDict = sortedArr[i];                int groupID = [[currentDict objectForKey:@"FGroupTag"] intValue];                if (groupID == preGroupID) {                    [currentArr addObject:currentDict];                }else{                    // 如果不相同,說明 有新的一組,那麼建立一個模型數組,並添加到組數組_groupArr                    currentArr = [NSMutableArray array];                    [currentArr addObject:currentDict];                    [_groupArr addObject:currentArr];                }            }        }        // 3、遍曆 對每一組 進行排序        NSMutableArray *tempGroupArr = [NSMutableArray array];        for (NSMutableArray *arr in _groupArr) {            NSArray *sortDesc = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"FOrder" ascending:YES]];            NSMutableArray *tempArr = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {                if([[obj1 objectForKey:@"FOrder"]intValue] < [[obj2 objectForKey:@"FOrder"]intValue]){                    return NSOrderedAscending;                }                if([[obj1 objectForKey:@"FOrder"]intValue] > [[obj2 objectForKey:@"FOrder"]intValue]){                    return NSOrderedDescending;                }                return NSOrderedSame;            }];            [tempGroupArr addObject:tempArr];        }        _groupArr = tempGroupArr;                NSLog(@"封裝好的group數組:%@",_groupArr);    }    return 0;}

iOS_字典數組 按key分組和排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.