iOS_字典數組 按key分組和排序 – iPhone手機開發技術文章 iPhone軟體開發教學課程

//
//  main.m
//  SortGroup
//
//  Created by beyond on 14-10-26.
//  Copyright (c) 2014年 beyond.com All rights reserved.
//  按GroupTag分組和 按Order字段排序 enabled表示不啟用

#import 

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  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 NSOrderedDescending;
                }
                return NSOrderedSame;
            }];
            [tempGroupArr addObject:tempArr];
        }
        _groupArr = tempGroupArr;
        
        NSLog(@"封裝好的group數組:%@",_groupArr);
    }
    return 0;
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *