web-dev-qa-db-fra.com

Comment ajouter à un NSDictionary

J'utilisais un NSMutableArray et je me suis rendu compte que l'utilisation d'un dictionnaire était beaucoup plus simple pour ce que j'essayais de réaliser.

Je veux enregistrer une clé en tant que NSString et une valeur en tant que int dans le dictionnaire. Comment est-ce fait? Deuxièmement, quelle est la différence entre un dictionnaire mutable et un dictionnaire normal?

85
jarryd

Un dictionnaire mutable peut être modifié, c’est-à-dire que vous pouvez ajouter et supprimer des objets. Un immuable est corrigé une fois créé.

créer et ajouter:

NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];

et récupérer:

int myNumber = [[dict objectForKey:@"A cool number"] intValue];
190
Eiko

En paramétrant, vous utiliseriez la méthode setValue:(id)value forKey:(id)key de NSMutableDictionary:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];

Ou en Objective-C moderne:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"age"] = @5;

La différence entre mutable et "normal" est, bien, mutabilité. C'est à dire. vous pouvez modifier le contenu de NSMutableDictionary (et NSMutableArray) alors que vous ne pouvez pas le faire avec "normal" NSDictionary et NSArray

32
Eimantas

Chaque fois que le tableau est déclaré, nous devons seulement ajouter la valeur-clé dans NSDictionary comme

NSDictionary *normalDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Value1",@"Key1",@"Value2",@"Key2",@"Value3",@"Key3",nil];

nous ne pouvons pas ajouter ou supprimer les valeurs de clé dans ce NSDictionary

Où, comme dans NSMutableDictionary, nous pouvons ajouter les objets après l’initialisation du tableau également en utilisant cette méthode

NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc]init];'
[mutableDict setObject:@"Value1" forKey:@"Key1"];
[mutableDict setObject:@"Value2" forKey:@"Key2"];
[mutableDict setObject:@"Value3" forKey:@"Key3"];

pour supprimer la valeur de la clé, nous devons utiliser le code suivant

[mutableDict removeObject:@"Value1" forKey:@"Key1"];
14
Madhu

Version de mise à jour

Objective-C

Créer:

NSDictionary *dictionary = @{@"myKey1": @7, @"myKey2": @5}; 

Changement:

NSMutableDictionary *mutableDictionary = [dictionary mutableCopy];     //Make the dictionary mutable to change/add
mutableDictionary[@"myKey3"] = @3;

La syntaxe abrégée s'appelle Objective-C Literals.

rapide

Créer:

var dictionary = ["myKey1": 7, "myKey2": 5]

Changement:

dictionary["myKey3"] = 3
9

Vous voulez demander "quelle est la différence entre un tableau ou un dictionnaire mutable et non mutable". Plusieurs fois, différents termes sont utilisés pour décrire des choses que vous connaissez déjà. Dans ce cas, vous pouvez remplacer le terme "mutable" par "dynamique". Ainsi, un dictionnaire ou un tableau mutable est un dictionnaire "dynamique" qui peut changer au moment de l'exécution, alors qu'un dictionnaire ou un tableau non mutable en est un qui est "statique" et défini dans votre code et qui ne change pas au moment de l'exécution (en d'autres termes , vous ne pourrez pas ajouter, supprimer ou éventuellement trier les éléments.)

Pour ce qui est de savoir comment cela se fait, vous nous demandez de répéter la documentation ici. Tout ce que vous avez à faire est de rechercher dans un exemple de code et dans la documentation Xcode pour voir comment cela fonctionne. Mais la chose mutable m'a jeté aussi quand j'ai appris la première fois, alors je vais vous donner celle-là!

1
Mark Hernandez

Pour référence, vous pouvez également utiliser initWithDictionary pour initialiser le NSMutableDictionary avec un nom littéral:

NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{
    @"touch": @0,
    @"app": @0,
    @"back": @0,
    @"volup": @0,
    @"voldown": @0
}];
0
Topher Fangio