考核6 数组和字符串 描述器排序 字典替换

#import <Foundation/Foundation.h>

static NSString * const kName = @"name";

static NSString * const kAge = @"age";

static NSString * const kGender = @"gender";

inline static NSMutableDictionary *CreateDict(NSString *name, NSInteger age,  BOOL isMale){

    NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithDictionary:@{kName:name,kAge :@(age),kGender :@(isMale)}];

    return dict;

}

int main(int argc, const char * argv[]) {

    @autoreleasepool {  

        NSArray *array = @[CreateDict(@"王思聪", 27, YES),

                           CreateDict(@"范冰冰", 35, NO),

                           CreateDict(@"马云", 51, YES),

                           CreateDict(@"霍建华", 36, YES),

                           CreateDict(@"赵丽颖", 28, NO)];

        //第1题 请按照年龄的升序排序输出,输出样式为:王思聪,男性,今年27岁

//        NSArray *arr=[array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

//            if(obj1[kAge]==obj2[kAge]){

//                return NSOrderedSame;

//            }else if(obj1[kAge]>obj2[kAge]){

//                return NSOrderedDescending;

//            }else{

//                return NSOrderedAscending;

//            }

//            }

//                      ];

        //排序二 描述器

        NSSortDescriptor *kAgeWithsort=[[NSSortDescriptor alloc]initWithKey:kAge ascending:YES];

        NSArray *weer=[NSArray arrayWithObjects:kAgeWithsort, nil];

        NSArray *weer1=[array sortedArrayUsingDescriptors:weer];

        for(NSDictionary *str in weer1){

            NSInteger num=[str[kGender] integerValue];      

            if (num==YES) {

                NSLog(@" %@男性,今年%@岁",str[kName],str[kAge]);        

            }else{

                 NSLog(@"%@, 女性,今年%@岁",str[kName],str[kAge]);       

            }           

        }

        //        for (id str in arr) {

        //            NSDictionary* idc=str;

        //            NSInteger num=[idc[kGender] integerValue];

        //            if (num==YES) {

        //                NSLog(@" %@男性,今年%@岁",idc[kName],idc[kAge]);

        //            }else{

        //            NSLog(@"%@, 女性,今年%@岁",idc[kName],idc[kAge]);

        //                  }

        //        }

        // 第2题 请输入女性信息,输出样式为:范冰冰大美女,今年35岁

        for (id str in array ) {

            NSDictionary* idc=str;

            NSInteger num=[idc[kGender] integerValue];

            if (num==NO) {

                NSLog(@"%@,大美女 女性,今年%@岁",idc[kName],idc[kAge]);

            }

        }

        //第3题 请将“马云”的年龄改为41岁

                for (int i=0; i<array.count; i++) {

            NSMutableDictionary *a=array[i]  ;

            if([a[kName] isEqualTo:@"马云"]){

                [a setValue:@41 forKey:kAge];

            }

        }

        for (id str in array) {

            NSDictionary* idc=str;

            NSInteger num=[idc[kGender] integerValue];

            if (num==YES) {

                NSLog(@" %@男性,今年%@岁",idc[kName],idc[kAge]);

            }else{

                NSLog(@"%@, 女性,今年%@岁",idc[kName],idc[kAge]);

            }

        }

    }

    return 0;

}

原文地址:https://www.cnblogs.com/j-h-t-123-n/p/5115638.html