Quelle est la différence entre un dictionnaire et un tableau?
Quelle est la différence entre un dictionnaire et d'une matrice, en particulier lorsque vous travaillez avec des fichiers PLIST? Quels sont les avantages de l'utilisation de l'un sur l'autre? Merci!
source d'informationauteur Jack Humphries
Vous devez vous connecter pour publier un commentaire.
Les deux
NSDictionary
etNSArray
sont les classes de collection, c'est à dire le groupe, avec d'autres objets.Un NSArray est une collection ordonnée' - chaque élément de la collection a un index entier, donc il y a un ordre explicite des éléments. Si vous changez l'ordre des éléments dans la collection alors que la collection n'est plus le même que l'ordre est différent. Un objet peut apparaître plusieurs fois dans la collection.
Un NSSet est une collection non ordonnée' - chaque élément apparaît dans un sac, l'ordre n'a pas d'importance et un objet ne peut exister qu'une fois dans le sac.
Un NSDictionary est un "indexé de la collection' - chaque élément de la collection a une clé et peut être récupérée à l'aide de cette clé. Un objet peut apparaître plus d'une fois, dans des tonalités différentes peuvent pointer vers le même objet, mais une clé ne peut apparaître qu'une seule fois. Un dictionnaire est aussi une forme de "table de hachage" si vous avez une formation de sciences informatiques.
Lors de l'analyse PLISTs, les Tableaux et les Dictionnaires sont les principaux types de vous avez à faire. Lorsque vous modifiez un fichier PLIST dans Xcode - si vous avez mis quelque chose comme un type Tableau, puis, tous les enfants sont listés comme "Point 0 Point 1 Point 2 de l'...", alors que, si vous le définissez comme un type de Dictionnaire, puis c'est les enfants sont la clé:des paires de valeurs.
L'un des principaux cas d'utilisation de la différence types est comme suit.
Imaginez un magazine de l'application qui contient un certain nombre d'articles. L'ordre des articles est important, et donc vous devez stocker chaque article dans un tableau. Si vous voulez changer l'ordre des articles, vous pouvez modifier l'ordre du tableau dans le fichier plist.
Les articles eux-mêmes peuvent être représentés par les Dictionnaires, contenant peut-être des touches comme "Texte", "Fond", "ArticleType". Vous utilisez un Dictionnaire, parce que vous pouvez ajouter des informations supplémentaires dans le dictionnaire à un certain moment dans l'avenir, et la clé:valeur mécanisme rend votre code compréhensible.
Un tableau est juste une liste ordonnée d'objets. Un dictionnaire des magasins de paires clé-valeur.
Par exemple:
Dictionnaire:
Il n'y a pas d'avantages ou inconvénients, ils sont juste deux structures de données, et que vous utilisez celui que vous avez besoin.
La principale différence est la façon dont vous pouvez accéder à l'intérieur.
Les deux tableaux et les dictionnaires sont des conteneurs et peut être lu sequentally (par exemple, les tableaux peuvent être énumérées par le biais d'un index et de dictionnaires par le biais d'une clé). Mais alors que les tableaux de maintenir l'ordre entre les objets, les dictionnaires non.
En outre, à l'aide de dictionnaires, vous avez la possibilité d'accéder à un objet spécifique avec une clé spécifique à un plus pratique pour l'utilisateur (mnémonique). Par exemple, dans un dictionnaire, vous savez pour sûr qu'avec une clé spécifique, dire "texte", est associé à un objet spécifique, dire
NSString
. La même chose pourrait être valable pour un tableau, mais avec quelques difficultés. Par exemple, comment êtes-vous sûr qu'à l'indice 0, il est l'objet spécifiqueNSString
?Au sujet de votre question et que je sais (depuis Xcode 4), les plists ont comme racine objet d'un dictionnaire. Pour plus d'informations, voir comment-ne-vous-changer-une-plists-racine-object-type-de-nsarray-en-xcode-4.
Espère que cela aide.
Dictionnaires associer une clé avec une valeur(objet) et de ne pas conserver l'ordre des éléments. Accès au tableau est fait par index - l'ordre est conservé. PLIst ajouter la possibilité d'utiliser d'utiliser le format XML de définition des données (clé,valeur paires).
NSDictionary est utile whwn u, pour accéder à un particulier de la valeur de clé.
NsArray est utile quand tu veux accéder à un sequntial de données.
NSDictionary ne conserve pas sa "valeur" des objets, mais un NSMutableArray conserver les objets ajoutés. Pour plus d'informations NSDictionary et NSArray