[示例]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;
}

 

 

posted @ 2016-01-08 13:13  零点五  阅读(715)  评论(0编辑  收藏  举报