如何添加到NSDictionary

我正在使用一个NSMutableArray并意识到使用字典是我想要实现的简单得多。

我想保存一个键作为一个NSString和一个值作为一个int在字典中。 这是怎么做的? 其次,mutable和一个正常的字典有什么区别?

一个可变的字典可以改变,即你可以添加和删除对象。 一旦创build, 不可变的就会被修复。

创build并添加:

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

并检索:

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

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

 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

当声明数组的时候,只有我们必须在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"]; 

更新版本

Objective-C的

创build:

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

更改:

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

Objective-C Literals语法叫做Objective-C Literals

迅速

创build:

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

更改:

 dictionary["myKey3"] = 3 

你想问的是“可变和不可变数组或字典之间有什么区别”。 很多时候用不同的术语来描述你已经知道的事情。 在这种情况下,您可以用“dynamic”来replace术语“可变”。 所以,一个可变的字典或数组是一个“dynamic的”,可以在运行时改变,而一个不可改变的字典或数组是一个“静态”,并定义在你的代码,并不会在运行时改变(换句话说,您将不会添加,删除或可能对元素进行sorting。)

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