OC语言字典

    // 创建字典对象
//    NSDictionary *dic = [[NSDictionary alloc] init];
//    NSDictionary *dict = [NSDictionary dictionary];
    NSDictionary *diction = [[NSDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"3",@"4", nil] ;
    NSLog(@"%@", diction);
    // 定义字面量字典类型
    NSDictionary *dic = @{@"1": @"2",@"3":@"4"};    // 不可变的类型 意味着里边的内容也不可变
    NSLog(@"%@", dic);
    // key是唯一的,但是value可以重复,key不能为空(注意成对出现)
    // 当前有多少键值对
    NSLog(@"%ld", diction.count);
    // 通过key找到对应的value
    NSLog(@"%@", [diction objectForKey:@"2"]);
    // diction[对应的key]
    NSLog(@"%@", diction[@"2"]);
    // 获取字典里所有key以及key所对应的value
    NSLog(@"%@", diction.allKeys);
    NSLog(@"%@", [diction allValues]);
    // 可变的字典
    NSMutableDictionary *dictionary1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1",@"2",@"3",@"4", nil];
    // for循环如何遍历字典
    for (NSInteger i = 0; i < dictionary1.count; i++) {
        NSLog(@"%@ = %@", dictionary1.allKeys[i],dictionary1.allValues[i]);
    }
    // forin的前部分是字典里的key
    for (NSString *temp in dictionary1) {
        NSLog(@"%@ = %@", temp, dictionary1[temp]);
    }
    // 对可变字典通过key值进行添加或替换
    // 当前key值不存在时
    [dictionary1 setObject:@"7" forKey:@"8"];
    NSLog(@"%@", dictionary1);
    // 当key存在时
    [dictionary1 setObject:@"199" forKey:@"8"];
    NSLog(@"%@", dictionary1);
    // 移除键值对
    [dictionary1 setValue:nil forKey:@"8"];
    NSLog(@"%@", dictionary1);
    // 这就是setValue和setObject的区别 当对value进行赋值为nil时 可执行移除对应key键值对操作 而Object如果这样写会直接崩溃
    [dictionary1 setValue:@"199" forKey:@"8"];
    [dictionary1 removeObjectForKey:@"8"];
    NSLog(@"%@", dictionary1);
    // 字典里嵌套数组
    NSArray *arr1 = @[@"1", @"2", @"3", @"4"];
    NSArray *arr2 = @[@"5", @"6", @"7", @"8"];
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:arr1,@"arr1",arr2,@"arr2", nil];
    // 遍历
    for (NSString *str in dictionary) {
        // 针对对应的key找到value,value是一个数组,所以用一个数组对象来接收
        NSArray *arr = dictionary[str];
        for (NSString *temp in arr) {
            NSLog(@"%@", temp);
        }
    }
    // 数组里嵌套字典
    NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"杨林",@"name",@"19",@"age", nil];
    NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"刘山山",@"name",@"20",@"age", nil];
    NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"商帅",@"name",@"18",@"age", nil];
    NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:@"崔磊",@"name",@"21",@"age", nil];
    NSArray *array = @[dic1,dic2,dic3,dic4];
    // 遍历
    for (NSDictionary *dic in array) {
        for (NSString *key in dic) {
            NSLog(@"%@", dic[key]);
        }
    }
    // 三层结构
    // 字典里套数组再套字典
    NSArray *array1 = @[dic1,dic2];
    NSArray *array2 = @[dic3,dic4];
    NSDictionary *bigDic = [NSDictionary dictionaryWithObjectsAndKeys:array1, @"array1",array2,@"array2", nil];
    // 遍历
    for (NSString *str in bigDic) {
        NSArray *arr = bigDic[str];
        for (NSDictionary *dic in arr) {
            for (NSString *key in dic) {
                NSLog(@"%@", dic[key]);
            }
        }
    }
    // 数组里套数组再套字典
    NSArray *bigArr = @[array1, array2];
    for (NSArray *arr in bigArr) {
        for (NSDictionary *dic in arr) {
            for (NSString *key in dic) {
                NSLog(@"%@", dic[key]);
            }
        }
    }
    // 稍微麻烦一点的就是字典里嵌套数组了,遍历的时候forin里循环变量要写key的NSString类型,然后在里边通过key找到对应value存放的新定义的数组中,再进行下一步forin
    // 定义三个书的字典
    NSMutableDictionary *book1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"三国演义",@"name",@"100",@"price",nil];
    NSMutableDictionary *book2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"水浒传",@"name",@"200",@"price",nil];
    NSMutableDictionary *book3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"西游记",@"name",@"300",@"price",nil];
    NSMutableDictionary *book4 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"红楼梦",@"name",@"400",@"price",nil];
    NSMutableDictionary *book5 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"金瓶梅",@"name",@"500",@"price",nil];
    NSMutableArray *arr = [NSMutableArray arrayWithObjects:book1,book2,book3,book4,nil];
    // 添加书籍
    [arr addObject:book5];
    // 删除书籍
    [arr removeObject:book4];
    // 按照书名更改价格
    for (NSDictionary *dic in arr) {
        if ([dic[@"name"] isEqualToString:@"金瓶梅"]) {
            [dic setValue:@"600" forKey:@"price"];
        }
    }
    for (NSMutableDictionary *dic in arr) {
        for (NSString *temp in dic) {
            NSLog(@"%@ = %@", temp, dic[temp]);
        }
    }
    NSLog(@"**************");
    // 打印所有书籍
    for (NSMutableDictionary *dic in arr) {
        for (NSInteger i = 0; i < dic.count; i++) {
            NSLog(@"%@ = %@", dic.allKeys[i], dic.allValues[i]);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值