Question

NSDictionary convient aux paires clé-valeur. Par quelle structure de données convient-il le mieux lorsque vous avez trois valeurs? Est-il préférable de créer une classe pour ces 3 valeurs, puis de laisser chaque objet d'un tableau contenir des instances de cette classe?

Pour être précis: la structure de données, appelons-la personne, j'imagine qu'elle a trois valeurs: (NSString) nom, (int) age, (BOOL) isAlive

Celles-ci auraient lieu dans un tableau (?). Il est important de pouvoir utiliser le nom en tant que clé et de faire référence au bloc entier avec un numéro commençant à zéro.

Était-ce utile?

La solution

Si vous avez une clé et deux valeurs, vous créerez probablement une classe pour les deux valeurs tout en utilisant un dictionnaire.

Si vous avez deux clés et une valeur, vous utiliserez probablement un dictionnaire imbriqué, c’est-à-dire un dictionnaire dans lequel la clé est la première clé et la valeur, un autre dictionnaire. La clé du dictionnaire imbriqué serait la deuxième clé et la valeur serait votre valeur réelle.

ETA:

Maintenant que vous avez clarifié votre question, si vous devez accéder à votre collection à la fois par clé ou par index, vous pouvez toujours utiliser un dictionnaire.

Pour obtenir un élément par clé, procédez comme suit:

[myDict objectForKey:@"joe"];

Pour obtenir un élément par index, vous pouvez utiliser le tableau allKeys:

[myDict objectForKey:[[myDict allKeys] objectAtIndex:1]];

Si le seul but d'obtenir les personnes par index est de boucler sur toute la collection, vous feriez mieux d'utiliser la méthode keyEnumerator pour énumérer les clés d'une boucle et les utiliser pour rechercher les valeurs. / p>

Autres conseils

Vous pouvez utiliser des données de base pour représenter des relations de données plus complexes, à l'aide d'un modèle de base de données relationnelle.

Consultez le site pour développeurs d’Apple pour des exemples et de la documentation.

Cela peut sembler sans relation au début, mais vérifiez la structure orientée dictionnaire dans cette Introduction à Liaisons de cacao . (CocoaDevCentral et Scott Stevenson sont d'excellentes ressources pour les nouveaux développeurs de Cocoa.) L'approche qu'il utilise est extrêmement flexible et facile à modifier par la suite. Utiliser un dictionnaire à la place d'ivars n'est pas toujours la meilleure solution, mais cela peut également convenir à vos besoins.

Remarque: Tout comme Core Data, Cocoa Bindings est également un sujet très complexe. Je suggère d'utiliser uniquement l'aspect organisationnel du didacticiel, sans aller jusqu'au bout des liaisons. : -)

Cela dépend si vous essayez de créer ou non une structure de données généralisée. Si les «trois» sont des concepts particuliers au sein de votre application, vous vous dirigez peut-être vers un modèle de domaine - dans ce cas, il serait sage d'encapsuler ces valeurs dans une classe.

Si vous avez besoin d'une fonctionnalité semblable à celle d'un dictionnaire - [NSDictionary objectForKey:], etc., vous pouvez toujours utiliser un ou plusieurs dictionnaires comme index qui mappent les valeurs de clé sur vos instances de classe.

Vous devez examiner CoreData (si vous le stockez) et définir une classe pour votre objet. Les objets génériques natifs tels que NSDictionary ne sont pas conçus pour stocker des valeurs complexes constituant des objets complexes comme une personne.

Person *person = [[Person alloc] init];
person.firstName = @"blah";
person.age = 24;
person.isAlive = YES;

N’est-ce pas là la description d’un tableau à deux dimensions ? <

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top