4

重複の可能性:
NSDictionaryに追加する方法

私がそれをするとき:

NSDictionary *dic = [NSDictionary dictionary];
[dic setValue:@"nvjd" forKey:@"name"];

私のアプリはただクラッシュします。理由がわかりません。辞書に文字列を追加するにはどうすればよいですか?

4

3 に答える 3

14

辞書を変更可能にする必要があります。そうしないと、setValue:forKey:セレクターに応答しません。

NSMutableDictionary *dic = [NSMutableDictionary dictionary];

これはココアの一般的なパターンです。クラスがペアで宣言されているのがよく見られます:NSArray/ NSMutableArrayNSSet/ NSMutableSetNSString/NSMutableStringなど。可変バージョンは、不変バージョンが実行できるすべてのことを実行できますが、コンテンツを変更する操作もサポートします。

于 2012-06-26T14:48:51.543 に答える
6
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:@"nvjd" forKey:@"name"];    

また

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"nvjd",@"name" nil];
于 2012-06-26T14:49:40.893 に答える
1

2つのオプションがあります。NSDictionaryキーと値のペア(または複数)で初期化するか、を作成しNSMutableDictionaryて後で追加します。

// Immutable
NSDictionary *dic = [NSDictionary dictionaryWithObject:@"nvjd" forKey:@"name"];

// Mutable
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:@"nvjd" forKey:@"name"];    
于 2012-06-26T14:51:34.160 に答える