web-dev-qa-db-fra.com

Remplacer une valeur dans NSDictionary sur iPhone

J'ai un tableau (dataArray) de "item" NSDictionary. Il a des données comme "david" pour la clé "nom" et "85" pour la clé "marques" etc. pour 5 étudiants. Je veux remplacer la marque de david par 90 par rapport à la valeur d'index du tableau (c'est-à-dire 0 pour le dictionnaire contenant david et 85). Comment puis-je le faire?

Le code du contenu du tableau est

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

Le code ci-dessus va à l'intérieur de l'analyse, j'ai donc un tableau avec 5 objets (étudiants), leur nom et leurs marques, maintenant je veux remplacer la marque du premier objet dans le dataArray.

28
Warrior

Voici ce que vous pouvez faire:

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];

J'espère que cela t'aides!

72
donkim

Vous avez d'abord besoin d'un NSMutableDictionary avec lequel vous pouvez modifier la clé et la valeur.

Ce serait comme ça:

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];

J'espère que ça aide

10
Zsivics Sanel

Si vous souhaitez mettre à jour un objet dans un NSDictionary, vous devez utiliser NSMutableDictionary à la place. NSMutableDictionary possède les méthodes EXTRA suivantes

Ajout d'entrées

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

Suppression d'entrées

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