【发布时间】:2011-03-10 17:53:32
【问题描述】:
我使用NSMutableArray 并意识到使用字典对于我想要实现的目标要简单得多。
我想在字典中将键保存为NSString,将值保存为int。这是怎么做到的?其次,可变字典和普通字典有什么区别?
【问题讨论】:
标签: iphone objective-c nsdictionary
我使用NSMutableArray 并意识到使用字典对于我想要实现的目标要简单得多。
我想在字典中将键保存为NSString,将值保存为int。这是怎么做到的?其次,可变字典和普通字典有什么区别?
【问题讨论】:
标签: iphone objective-c nsdictionary
作为参考,您还可以使用 initWithDictionary 来初始化 NSMutableDictionary 与一个字面值:
NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{
@"touch": @0,
@"app": @0,
@"back": @0,
@"volup": @0,
@"voldown": @0
}];
【讨论】:
Objective-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
【讨论】:
当数组被声明时,我们只需要在 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"];
【讨论】:
通过设置您将使用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;
可变和“正常”之间的区别是可变性。 IE。你可以改变NSMutableDictionary(和NSMutableArray)的内容,而你不能用“正常”NSDictionary和NSArray来做到这一点
【讨论】:
[{image: "/path/to/img/1.jpg", data: "foo bar 1"}, {image: "/path/to/img/2.jpg", data: "foo bar 2"}, ..., {image: "/path/to/img/N.jpg", data: "foo bar N"}]
可变 字典可以更改,即您可以添加和删除对象。 不可变的一旦创建就固定了。
创建和添加:
NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];
并检索:
int myNumber = [[dict objectForKey:@"A cool number"] intValue];
【讨论】:
您要问的是“可变数组或字典与不可变数组或字典有什么区别”。很多时候,不同的术语被用来描述你已经知道的事情。在这种情况下,您可以将术语“可变”替换为“动态”。因此,可变字典或数组是“动态”的并且可以在运行时更改,而非可变字典或数组是“静态”并在您的代码中定义并且在运行时不会更改(换句话说,您将不会添加、删除或排序元素。)
至于它是如何完成的,您要求我们在此处重复文档。您需要做的就是在示例代码和 Xcode 文档中搜索,以了解它是如何完成的。但是在我第一次学习时,可变的东西也让我感到震惊,所以我给你一个!
【讨论】: