如何添加到NSDictionary

时间:2010-07-01 16:43:41

标签: iphone objective-c nsdictionary

我正在使用NSMutableArray并意识到使用字典对于我想要实现的目标来说要简单得多。

我想将一个密钥保存为NSString,将值保存为字典中的int。这是怎么做到的?其次,mutable和普通字典有什么区别?

6 个答案:

答案 0 :(得分:189)

可以更改可变字典,即可以添加和删除对象。 immutable 一旦创建就会被修复。

创建并添加:

NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];

并检索:

int myNumber = [[dict objectForKey:@"A cool number"] intValue];

答案 1 :(得分:32)

通过设置您使用setValue:(id)value forKey:(id)key对象的NSMutableDictionary方法:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];

或者在现代Objective-C中:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"age"] = @5;

可变性和“正常”之间的差异是可变性。即您可以更改NSMutableDictionary(和NSMutableArray)的内容,而不能使用“普通”NSDictionaryNSArray

进行更改

答案 2 :(得分:12)

当声明数组时,只有我们必须在NSDictionary中添加键值,如

NSDictionary *normalDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Value1",@"Key1",@"Value2",@"Key2",@"Value3",@"Key3",nil];

我们无法添加或删除此NSDictionary中的键值

在NSMutableDictionary中,我们也可以在数组初始化之后添加对象 使用这种方法

NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc]init];'
[mutableDict setObject:@"Value1" forKey:@"Key1"];
[mutableDict setObject:@"Value2" forKey:@"Key2"];
[mutableDict setObject:@"Value3" forKey:@"Key3"];

要删除键值,我们必须使用以下代码

[mutableDict removeObject:@"Value1" forKey:@"Key1"];

答案 3 :(得分:9)

更新版本

<强>目标C

创建:

NSDictionary *dictionary = @{@"myKey1": @7, @"myKey2": @5}; 

变化:

NSMutableDictionary *mutableDictionary = [dictionary mutableCopy];     //Make the dictionary mutable to change/add
mutableDictionary[@"myKey3"] = @3;

简写语法称为Objective-C Literals

<强>夫特

创建:

var dictionary = ["myKey1": 7, "myKey2": 5]

变化:

dictionary["myKey3"] = 3

答案 4 :(得分:1)

你想问的是“mutable和non-mutable数组或字典之间有什么区别。”很多时候,不同的术语用于描述您已经了解的事物。在这种情况下,您可以将术语“可变”替换为“动态”。因此,可变字典或数组是“动态”的并且可以在运行时更改,而非可变字典或数组是“静态”的并且在代码中定义并且在运行时不会更改(换句话说) ,您不会添加,删除或可能对元素进行排序。)

至于如何完成,你要求我们在这里重复文档。您需要做的就是搜索示例代码和Xcode文档,以确切了解它是如何完成的。但是当我第一次学习时,可变的东西也把我扔了,所以我会给你那个!

答案 5 :(得分:0)

作为参考,您还可以利用initWithDictionary来将NSMutableDictionary与原义字符一起初始化:

NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{
    @"touch": @0,
    @"app": @0,
    @"back": @0,
    @"volup": @0,
    @"voldown": @0
}];