如何添加到NSDictionary

jar*_*ryd 85 iphone objective-c nsdictionary

我正在使用a NSMutableArray并意识到使用字典对于我想要实现的内容来说要简单得多.

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

Eik*_*iko 192

一个可变的字典是可以改变的,比如,你可以添加和删除对象.一个不可变的,一旦它被创建是固定的.

创建并添加:

NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];
Run Code Online (Sandbox Code Playgroud)

并检索:

int myNumber = [[dict objectForKey:@"A cool number"] intValue];
Run Code Online (Sandbox Code Playgroud)

  • 您不必指定初始容量,但如果这样做,您可能会看到性能提升.如果您事先知道它将包含多少项,请提供此数字或略大的值. (2认同)

Eim*_*tas 32

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

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];
Run Code Online (Sandbox Code Playgroud)

或者在现代Objective-C中:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"age"] = @5;
Run Code Online (Sandbox Code Playgroud)

可变性和"正常"之间的差异是可变性.即你可以改变NSMutableDictionary(和NSMutableArray)的内容,而你不能用"正常" NSDictionaryNSArray

  • 你不应该在NSNumber中包装该整数吗? (2认同)

Mad*_*dhu 15

当声明数组时,只需要在NSDictionary中添加键值

NSDictionary *normalDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Value1",@"Key1",@"Value2",@"Key2",@"Value3",@"Key3",nil];
Run Code Online (Sandbox Code Playgroud)

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

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

NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc]init];'
[mutableDict setObject:@"Value1" forKey:@"Key1"];
[mutableDict setObject:@"Value2" forKey:@"Key2"];
[mutableDict setObject:@"Value3" forKey:@"Key3"];
Run Code Online (Sandbox Code Playgroud)

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

[mutableDict removeObject:@"Value1" forKey:@"Key1"];
Run Code Online (Sandbox Code Playgroud)


War*_*shi 9

更新版本

Objective-C的

创建:

NSDictionary *dictionary = @{@"myKey1": @7, @"myKey2": @5}; 
Run Code Online (Sandbox Code Playgroud)

更改:

NSMutableDictionary *mutableDictionary = [dictionary mutableCopy];     //Make the dictionary mutable to change/add
mutableDictionary[@"myKey3"] = @3;
Run Code Online (Sandbox Code Playgroud)

调用简写语法Objective-C Literals.

迅速

创建:

var dictionary = ["myKey1": 7, "myKey2": 5]
Run Code Online (Sandbox Code Playgroud)

更改:

dictionary["myKey3"] = 3
Run Code Online (Sandbox Code Playgroud)