[示例]NSDictionary-按value排序数组中的字典并输出(描述器)
1.将四个学生信息的字典存入数组中,输出数据以班级:XXX,姓名:XXX,年龄:XX格式。
2.删除小明此条数据,列出剩余数据,输出格式同上。
3.按照班级进行排序,如果班级相同则按照年龄排序输出数据,格式同上。
代码:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSDictionary *dic1=@{@"name":@"小阳", @"class":@"IOS8", @"age":@"24"}; NSDictionary *dic2=@{@"name":@"小王", @"class":@"IOS6", @"age":@"67"}; NSDictionary *dic3=@{@"name":@"小丽", @"class":@"IOS8", @"age":@"12"}; NSDictionary *dic4=@{@"name":@"小杨", @"class":@"IOS8", @"age":@"33"}; NSDictionary *dic5=@{@"name":@"小明", @"class":@"IOS6", @"age":@"31"}; NSMutableArray *arr=[NSMutableArray arrayWithObjects:dic1,dic2,dic3,dic4,dic5,nil]; for(NSDictionary *dic in arr){ NSLog(@"姓名:%@,班级:%@,年龄:%@",dic[@"name"],dic[@"class"],dic[@"age"]); } //删除小明的数据 NSMutableArray *arr1=[NSMutableArray array]; for(int i=0;i<arr.count;i++){ NSDictionary *dic=arr[i]; if(![[dic objectForKey:@"name"] isEqual:@"小明"] ){ [arr1 addObject:dic]; } } for(NSDictionary *dic in arr){ NSLog(@"姓名:%@,班级:%@,年龄:%@",dic[@"name"],dic[@"class"],dic[@"age"]); } NSLog(@"------------"); /* //block方法排序 NSComparator comp=^(NSDictionary *dict1,NSDictionary *dict2){ //block法排序 if(dict1[@"class"]==dict2[@"class"]){ return [dict1[@"age"] compare:dict2[@"age"]]; } else{ return [dict1[@"class"] compare:dict2[@"class"]]; } }; NSMutableArray *arr1=[NSMutableArray arrayWithObjects:dic1,dic2,dic3,dic4,nil]; NSArray *sortArr=[arr1 sortedArrayUsingComparator:comp]; //排序数组中的字典 */ //描述器排序 NSSortDescriptor NSSortDescriptor *classWithSort=[[NSSortDescriptor alloc]initWithKey:@"class" ascending:YES]; NSSortDescriptor *ageWithSort=[[NSSortDescriptor alloc]initWithKey:@"age" ascending:YES]; NSArray *elementarr=[NSArray arrayWithObjects:classWithSort,ageWithSort,nil]; //建立描述器规则数组 NSArray *sortArr=[arr1 sortedArrayUsingDescriptors:elementarr]; //使用描述器排序 for(NSDictionary *dic in sortArr){ NSLog(@"姓名:%@,班级:%@,年龄:%@",dic[@"name"],dic[@"class"],dic[@"age"]); } } return 0; }