OC中字典基本用法

来源:互联网 发布:麦克雷爆头伤害数据 编辑:程序博客网 时间:2024/06/06 05:26
#import <Foundation/Foundation.h>@interface Contact : NSObject@property (nonatomic, retain)NSString *name;@property (nonatomic, retain)NSString *number;- (instancetype)initWithName:(NSString *)name number:(NSString *)number;+ (instancetype)contactWithName:(NSString *)name number:(NSString *)number;@end@implementation Contact- (instancetype)initWithName:(NSString *)name              number:(NSString *)number{    self = [super init];    if (self) {        _name = name;        _number = number;    }    return self;}+ (instancetype)contactWithName:(NSString *)name number:(NSString *)number{    Contact *contact = [[Contact alloc] initWithName:name number:number];    return contact;}- (NSString *)description{    return [NSString stringWithFormat:@"name:%@  number:%@", self.name, self.number];}@endint main(int argc, const char * argv[]) {    @autoreleasepool {        //字典:用来存储键值对应的条目,条目之间无序只能通过键获取值#pragma mark - 不可变字典        //创建        //初始化方法        NSDictionary *initDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"zhangsan", @"name", @27, @"age", @"m", @"sex", nil];        NSLog(@"initDict = %@", initDict);        //便利构造器创建        NSDictionary *initDict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan", @"name", @27, @"age", @"m", @"sex", nil];        NSLog(@"initDict = %@", initDict1);        //用已有的字典创建        NSDictionary *initDict2 = [NSDictionary dictionaryWithDictionary:initDict1];        NSLog(@"initDict2 = %@", initDict2);        //字面量创建        NSDictionary *initDict3 = @{@"name":@"zhangsan", @"age":@27, @"sex":@"m"};        NSLog(@"initDict3 = %@", initDict3);        //功能        //获取字典中条目的数量        NSInteger count = [initDict1 count];        NSLog(@"count = %ld", count);        NSInteger count1 = initDict1.count;        NSLog(@"count1 = %ld", count1);        //获取所有的key值(使用数组接受所有的key值)        NSArray *keyArray = [initDict3 allKeys];        NSLog(@"dictArray = %@", keyArray);        //通过key值获取对应的Value        //在不知道Value的对象类型的时候可以使用id接受        id object = [initDict objectForKey:@"name"];        NSLog(@"object = %@", object);        //已知Value的类型        NSInteger age = 0;        [[initDict objectForKey:@"age"] getValue:&age];        NSLog(@"age = %ld", age);        //字面量获取        id object1 = initDict[@"sex"];        NSLog(@"object = %@", object1);        //获取说有的Value        NSArray *valueArray = [initDict1 allValues];        NSLog(@"valueArray = %@", valueArray);        //遍历字典        for (int  i = 0; i < initDict1.count; i++) {            NSLog(@"%@:%@",keyArray[i], [initDict1 valueForKey:keyArray[i]]);        }#pragma mark - 可变字典        //可变字典继承不可变字典        //预留两个空间,返回首地址        NSMutableDictionary *mInitDict = [[NSMutableDictionary alloc] initWithCapacity:2];        //增加条目(key值和value都不能为nil)        [mInitDict setObject:@"zhangsan" forKey:@"name"];        [mInitDict setObject:@"m" forKey:@"sex"];        //字面量添加        mInitDict[@"age"] = @18;        NSLog(@"mInitDict = %@", mInitDict);        //如果添加的条目key值已经存在,再次添加时回覆盖key值所对应的value        [mInitDict setObject:@"lishi" forKey:@"name"];        NSLog(@"mInitDict = %@", mInitDict);        //删除        //删除一个条目(removeObjectsForKey为删除多对)        [mInitDict removeObjectForKey:@"age"];        NSLog(@"mInitDict = %@", mInitDict);        //删除所有条目        [mInitDict removeAllObjects];        NSLog(@"mInitDict = %@", mInitDict);#pragma mark - example        //创建联系人分组        NSMutableDictionary *contacts = [[NSMutableDictionary alloc] initWithCapacity:2];        for (int i = 0; i < 26; i++) {            NSMutableArray *group = [[NSMutableArray alloc] initWithCapacity:2];            [contacts setObject:group forKey:[NSString stringWithFormat:@"%c", 'A'+i]];        }        //将联系人添加到对应的分组里面        Contact *person1 = [Contact contactWithName:@"libai" number:@"4587965"];        if (person1.name.length == 0 && person1.number.length == 0) {            NSLog(@"添加失败");        }else {            NSString *capitalName = [[person1.name substringToIndex:1] capitalizedString];            NSMutableArray *group = [contacts objectForKey:capitalName];            [group addObject:person1];        }        NSLog(@"contact = %@", contacts);        NSLog(@"Hello, World!");    }    return 0;}
1 0