2013-06-06 8 views
0

j'ai un nsmutabeldictionary comme celui-ciMise à jour NSMutableDictionary insérer une nouvelle clé

{ 
     alert = "test from dot net"; 
     badge = 1; 
     sound = default; 
    } 

et que vous souhaitez un 'ID' clé avec la valeur 10 comme

 { 
     alert = "test from dot net"; 
     badge = 1; 
     sound = default; 
     ID = 10; 
    } 

s'il vous plaît aider

+1

Avez-vous essayé d'écrire un code pour faire ça? Pouvez-vous montrer le code Objective-C que vous avez essayé? –

Répondre

1

De votre commentaire:

'NSUnknownKeyException', raison: « [< __NSDictionaryI 0x1ede8740> setValue: forUndefinedKey:]:

Il semble que si vous avez réellement un dictionnaire immuable (note le suffixe I).

J'imagine votre code ressemble à ceci:

//Even though you are assigning to a mutable object 
//The method may not return an mutable dictionary 
NSMutableDictionary *d = [someObject getDictionary]; 

Vous devriez utiliser:

NSMutableDictionary *d = [NSMutableDictionary dictionaryWithDictionary:[someObject getDictionary]]; 

Ensuite, vous pouvez utiliser confortablement:

[d setObject:@10 forKey:@"ID"]; 
+0

Merci! c'est du travail –

1

Vous venez Appeler le setObject:forKey

Ajoute une paire clé-valeur donnée au dictionnaire.

- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey 

Paramètres

anObject

La valeur de aKey. Une référence forte à l'objet est maintenue par le dictionnaire. Déclenche une exception NSInvalidArgumentException si un objet est nul. Si vous devez représenter une valeur nulle dans le dictionnaire, utilisez NSNull.

aKey

La clé de la valeur . La clé est copiée (en utilisant copyWithZone :; les clés doivent être conformes au protocole NSCopying ). Déclenche une exception NSInvalidArgumentException si aKey est nul. Si une clé existe déjà dans le dictionnaire, un objet prend sa place .

Dans votre exemple, vous pouvez l'appeler comme ceci:

[yourMutableDictionary setObject:[NSNumberWithInt:10] forKey:@"ID"] 

aussi, rappelez-vous que vous devez passer un NSObject. Donc, vous devriez utiliser [NSNumberWithInt:10] au lieu de seulement 10.

0

Pour ajouter un nouvel objet avec la nouvelle clé du dictionnaire, vous pouvez utiliser SetObject: forKey Method.

+0

en essayant cela mais en obtenant ce type d'erreur Terminaison de l'application due à l'exception non interceptée 'NSUnknownKeyException', raison: '[<__NSDictionaryI 0x1ede8740> setValue: forUndefinedKey:]: cette classe n'est pas conforme au code clé. *** Première pile d'appel jeter: –

+1

C'est 'setValue:' vous devriez essayer 'setObject:' –

+0

semble que vous avez un objet NSDictionary .. Vous devez avoir NSMutabledictionary si vous voulez l'éditer 0time – user1113101

Questions connexes