OC之NSDictionary

本文详细介绍了Objective-C中字典(NSDictionary和NSMutableDictionary)的常见用法,包括添加、删除、修改及查看方法,并通过示例代码展示了不同初始化方式的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

讲解OC中字典(NSDictionary 不可变字典 NSMutableDictionary 可变字典)的常见用法:

先看一下知识树


1.字典(NSDictionary/NSMutableDictionary)添加方法

代码段:

        // 字典(NSDictionary/NSMutableDictionary)添加方法
        // 使用字面量:@{@“key1”:Object1, @"key2":Object2...}(NSDictionary适用)
        NSDictionary *dict1 = @{@"key1":@"value1", @"key2":@"value2"};
        NSLog(@"字面量创建不可变字典 dict1 = %@", dict1);
        
        // 使用初始化方法1:[[NSDictionary alloc] initWithObjects:forKeys:](NSDictionary/NSMutableDictionary适用)
        NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", @"key3", nil];
        NSArray *values = [NSArray arrayWithObjects:@"value1", @"value2", @"value3", nil];
        NSDictionary *dict2 = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
        NSLog(@"使用初始化方法1创建不可变字典 dict2 = %@", dict2);
        NSMutableDictionary *muDict1 = [[NSMutableDictionary alloc] initWithObjects:values forKeys:keys];
        NSLog(@"使用初始化方法1创建可变字典 muDict1 = %@", muDict1);
        
        // 使用初始化方法2:[[NSDictionary alloc] initWithObjectsAndKeys:object1, key1,object2,key2.....,nil]
        //(NSDictionary/NSMutableDictionary适用)
        NSDictionary *dict3 = [[NSDictionary alloc] initWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
        NSLog(@"使用初始化方法2创建不可变字典 dict3 = %@", dict3);
        NSMutableDictionary *muDict2 = [[NSMutableDictionary alloc] 
                                         initWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
        NSLog(@"使用初始化方法2创建可变字典 muDict2 = %@", muDict2);
        
        // 使用便利构造器1:[NSDictionary dictionaryWithObjects:forKeys:]
        // 便利构造器[NSDictionary dictionaryWithObjects:forKeys:]和初始化方法1的用法一样
        
        // 使用便利构造器2:[NSDictionary dictionaryWithObjecsAndKeys:object1, key1, object2, key2......,nil]
        // 便利构造器[NSDictionary dictionaryWithObjecsAndKeys:object1, key1, object2, key2......,nil]和初始化方法2的用法一样
        
        // 添加键值对:[mutableDict setObject:forKey:](当key在字典中不存在的场合,做追加操作)
        [muDict2 setObject:@"value3" forKey:@"key3"];
        NSLog(@"可变字典追加键值对 muDict2 = %@", muDict2);
运行结果:

2015-05-31 17:02:49.903 Demo_01[2544:154400] 字面量创建不可变字典 dict1 = {
    key1 = value1;
    key2 = value2;
}
2015-05-31 17:02:49.905 Demo_01[2544:154400] 使用初始化方法1创建不可变字典 dict2 = {
    key1 = value1;
    key2 = value2;
    key3 = value3;
}
2015-05-31 17:02:49.905 Demo_01[2544:154400] 使用初始化方法1创建可变字典 muDict1 = {
    key1 = value1;
    key2 = value2;
    key3 = value3;
}
2015-05-31 17:02:49.905 Demo_01[2544:154400] 使用初始化方法2创建不可变字典 dict3 = {
    key1 = value1;
    key2 = value2;
}
2015-05-31 17:02:49.905 Demo_01[2544:154400] 使用初始化方法2创建可变字典 muDict2 = {
    key1 = value1;
    key2 = value2;
}
2015-05-31 17:02:49.905 Demo_01[2544:154400] 可变字典追加键值对 muDict2 = {
    key1 = value1;
    key2 = value2;
    key3 = value3;
}

2.字典(NSMutableDictionary)删除方法(删除的方法只对NSMutableDictionary适用)

代码段:

        // 字典(NSMutableDictionary)删除方法
        // 删除指定键的键值对:[mutableDict removeObjectForKey:]
        [muDict1 removeObjectForKey:@"key1"];
        NSLog(@"可变字典删除键值对 muDict1 = %@", muDict1);
        
        // 删除指定键数组的键值对:[mutableDict removeObjectsForKeys:]
        NSArray *removeArray = [NSArray arrayWithObject:@"key2"];
        [muDict1 removeObjectsForKeys:removeArray];
        NSLog(@"可变字典根据数组删除键值对 muDict1 = %@", muDict1);
        
        // 删除所有键值对:[mutableDict removeAllObjects]
        [muDict1 removeAllObjects];
        NSLog(@"可变字典删除所有键值对 muDict1 = %@", muDict1);
运行结果:

2015-05-31 17:13:39.704 Demo_01[2626:160095] 可变字典删除键值对 muDict1 = {
    key2 = value2;
    key3 = value3;
}
2015-05-31 17:13:39.704 Demo_01[2626:160095] 可变字典根据数组删除键值对 muDict1 = {
    key3 = value3;
}
2015-05-31 17:13:39.705 Demo_01[2626:160095] 可变字典删除所有键值对 muDict1 = {
}

3.字典(NSMutableDictionary)修改方法(修改的方法只对NSMutableDictionary适用)

        // 字典(NSMutableDictionary)修改方法
        // 当键存在的场合:[mutableDict setObject:forKey:]
        [muDict2 setObject:@"value1_1" forKey:@"key1"];
        NSLog(@"可变字典修改指定键的值 muDict2 = %@", muDict2);
        // 将参数字典赋值到指定字典:[mutableDict setDictionary:]
        [muDict1 setDictionary:muDict2];
        NSLog(@"将参数字典赋值到指定字典 muDict1 = %@", muDict1);
运行结果:

2015-05-31 17:27:31.536 Demo_01[2678:165360] 可变字典修改指定键的值 muDict2 = {
    key1 = "value1_1";
    key2 = value2;
    key3 = value3;
}
2015-05-31 17:27:31.551 Demo_01[2678:165360] 将参数字典赋值到指定字典 muDict1 = {
    key1 = "value1_1";
    key2 = value2;
    key3 = value3;
}

4.字典(NSDictionary/NSMutableDictionary)查看方法

代码段:

        // 字典(NSDictionary/NSMutableDictionary)查看方法 (可变数组和不可变数组的使用方法都是一样的)
        // 查看指定key的value:Object = mutableDict[key]
        NSString *value = muDict1[@"key1"];
        NSLog(@"查看指定key的value = %@", value);
        
        // 查看指定key对应的value:Object = [mutableDict objectForKey:]
        NSString *value2 = [muDict1 objectForKey:@"key2"];
        NSLog(@"查看指定key的value2 = %@", value2);
        
        // 取得所有key的值:NSArray = [mutableDict allKeys]
        NSArray *keysArray = [muDict1 allKeys];
        NSLog(@"取得所有key的值 keysArray = %@", keysArray);
        
        // 取得所有的Value值:NSArray = [mutableDict allValues:]
        NSArray *valuesArray = [muDict1 allValues];
        NSLog(@"取得所有的Value值 valuesArray = %@", valuesArray);
运行结果:

2015-05-31 17:38:11.789 Demo_01[2734:170286] 查看指定key的value = value1_1
2015-05-31 17:38:11.789 Demo_01[2734:170286] 查看指定key的value2 = value2
2015-05-31 17:38:11.790 Demo_01[2734:170286] 取得所有key的值 keysArray = (
    key1,
    key3,
    key2
)
2015-05-31 17:38:11.790 Demo_01[2734:170286] 取得所有的Value值 valuesArray = (
    "value1_1",
    value3,
    value2
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值