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?
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];
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
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"];
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
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à!
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
}];