web-dev-qa-db-ja.com

iPhoneのNSDictionaryの値を置き換える

NSDictionary "item"の配列(dataArray)があります。 5人の学生のキー「名前」に「david」、キー「マーク」に「85」などのデータがあります。配列インデックス値に関してdavidのマークを90に置き換えたい(つまり、davidと85を含む辞書の場合は0)。どうすればいいですか?

配列内のコンテンツのコードは

[item setobject:name forkey:@"Name"];
[item setobject:mark forkey:@"Marks"];
[dataArray addOject:item]

上記のコードは構文解析の内部にあるため、5つのオブジェクト(生徒)とその名前とマークの配列があり、dataArrayの最初のオブジェクトのマークを置き換えたいと思います。

28
Warrior

できることは次のとおりです。

NSMutableDictionary *newDict = [[NSMutableDictionary alloc] init];
NSDictionary *oldDict = (NSDictionary *)[dataArray objectAtIndex:0];
[newDict addEntriesFromDictionary:oldDict];
[newDict setObject:@"Don" forKey:@"Name"];
[dataArray replaceObjectAtIndex:0 withObject:newDict];
[newDict release];

お役に立てれば!

72
donkim

最初にNSMutableDictionaryが必要で、キーと値を変更できます。

次のようになります。

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"david", @"name", "85", @"marks", nil];

[dict setObject:@"90" forKey:@"david"];
29
vodkhang
 // NSDictionary *dict = ...
    NSMutableDictionary *mutableDict = [dict mutableCopy];
    [mutableDict setObject:@"myObject" forKey:@"myKey"];
    dict = [mutableDict mutableCopy];

私はそれが役立つことを願っています

10
Zsivics Sanel

NSDictionaryのオブジェクトを更新する場合は、代わりにNSMutableDictionaryを使用する必要があります。 NSMutableDictionaryには次のEXTRAメソッドがあります

エントリーを追加する

  • setObject:forKey:
  • setValue:forKey:
  • addEntriesFromDictionary:
  • setDictionary:

エントリの削除

  • removeObjectForKey:
  • removeAllObjects
  • removeObjectsForKeys:
10
Tibidabo
[davidsRecord setObject:@"100" forkey:@"mark"];
1
mmccomb