【发布时间】:2012-06-26 14:47:59
【问题描述】:
当我这样做时:
NSDictionary *dic = [NSDictionary dictionary];
[dic setValue:@"nvjd" forKey:@"name"];
我的应用程序崩溃了。我不明白为什么。我应该如何在字典中添加字符串?
【问题讨论】:
标签: objective-c ios
当我这样做时:
NSDictionary *dic = [NSDictionary dictionary];
[dic setValue:@"nvjd" forKey:@"name"];
我的应用程序崩溃了。我不明白为什么。我应该如何在字典中添加字符串?
【问题讨论】:
标签: objective-c ios
您需要将您的字典设为mutable,否则它不会响应setValue:forKey: 选择器:
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
这是 cocoa 中的常见模式:您经常看到成对声明的类:NSArray/NSMutableArray、NSSet/NSMutableSet、NSString/NSMutableString,等等。可变版本能够做不可变版本可以做的所有事情,但它也支持更改其内容的操作。
【讨论】:
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:@"nvjd" forKey:@"name"];
或
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"nvjd",@"name" nil];
【讨论】:
你有两个选择。要么使用键/值对(或多个)初始化 NSDictionary,要么创建 NSMutableDictionary 并稍后添加。
// Immutable
NSDictionary *dic = [NSDictionary dictionaryWithObject:@"nvjd" forKey:@"name"];
// Mutable
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:@"nvjd" forKey:@"name"];
【讨论】: