iOS_字典数组 按key分组和排序
2014-10-26 11:11
447 查看
// // 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:字典数组排序
- iOS 第五期考核题(字典与数组嵌套,字典的排序/删除)
- 将对象数组按照每一组对象的key值大小进行字典顺序(ASCII值大小)升序排序
- iOS 字典中遍历出的key 如何进行排序
- iOS开发——根据数组中的字典中的某一元素排序
- ios开发 数组排序——根据数组内字典的指定属性排序
- ios开发数组排序(数组中包括字典)
- iOS中对字典的key进行排序
- ios身份证key字典排序
- ios开发数组排序(数组中包括字典)
- iOS_词典阵列 按key分组和排序
- ios字典存到数组当中进行年龄降序排序,然后删除指定的成员信息
- iOS--字典数组排序(每个数组里面都是一个model)NSSortDescriptor
- iOS排序〈字典〉数组
- iOS 字典按照key的排序
- iOS 5 数组转换成字典形式并且排序,然后删除指定字典让中的内容
- IOS 字典数组简写,以及字典中没有此key的取值
- 数组中有字典、对字典进行升序,然后运用描述器进行排序,更改字典让中元素的信息iOS 6习题
- iOS 数组中的string 按照字典排序
- ios开发数组排序(数组中包括字典)