Créer une liste de propriétés de dictionnaire par programme
Je veux en programmant créer un dictionnaire qui se nourrit des données de mon UITableView, mais je vais avoir un moment difficile avec elle. Je veux créer un dictionnaire qui ressemble à cette liste de propriétés (image) donner ou prendre une couple de points.
J'ai regardé "Liste Des Propriétés De Guide De Programmation: Création De Listes De Propriété Par Programmation" et je suis venu avec un petit échantillon de mon propre:
//keys
NSArray *Childs = [NSArray arrayWithObjects:@"testerbet", nil];
NSArray *Children = [NSArray arrayWithObjects:@"Children", nil];
NSArray *Keys = [NSArray arrayWithObjects:@"Rows", nil];
NSArray *Title = [NSArray arrayWithObjects:@"Title", nil];
//strings
NSString *Titles = @"mmm training";
//dictionary
NSDictionary *item1 = [NSDictionary dictionaryWithObject:Childs, Titles forKey:Children , Title];
NSDictionary *item2 = [NSDictionary dictionaryWithObject:Childs, Titles forKey:Children , Title];
NSDictionary *item3 = [NSDictionary dictionaryWithObject:Childs, Titles forKey:Children , Title];
NSArray *Rows = [NSArray arrayWithObjects: item1, item2, item3, nil];
NSDictionary *Root = [NSDictionary dictionaryWithObject:Rows forKey:Keys];
//NSDictionary *tempDict = [[NSDictionary alloc] //initWithContentsOfFile:DataPath];
NSDictionary *tempDict = [[NSDictionary alloc] initWithDictionary: Root];
Je suis en train d'utiliser ces données de la hiérarchie pour ma table de vues.
Donc je me demandais comment je peux créer ma liste de propriétés (dictionnaire) par programme pour que je puisse le remplir avec mes propres tableaux.
Je suis encore nouveau avec l'iPhone de développement afin de garder avec moi. 😉
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
C'est une situation où "apprendre à un homme à pêcher" est beaucoup plus utile que de "donner un poisson à un homme". Une fois que vous comprenez les principes de base et les NSDictionary API, il devient beaucoup plus facile de créer votre propre solution personnalisée. Voici quelques observations et les points d'apprentissage:
+dictionaryWithObject:forKey:
est utilisé pour créer un NSDictionary avec une seule paire clé-valeur. Il n'acceptera pas séparées par des virgules arguments après chaque deux-points (:) dans l'appel de méthode, juste un. Pour créer un dictionnaire avec plusieurs paires clé-valeur, utilisez l'une des 2 méthodes connexes:+dictionaryWithObjects:forKeys:
qui accepte deux NSArray objets contenant des valeurs et des touches, ou+dictionaryWithObjectsAndKeys:
de l'alternance (objet, clé, objet, clé) avec une terminaison denil
argument.copie
sur elle. (Rappelez-vous qu'une copie de cette méthode renvoie un objet que vous devez libérer pour éviter les fuites de mémoire.) De cette façon, vous n'avez pas à avoir une variable pour chaque valeur unique de sorte que vous pouvez faire un "one shot", création de la structure(s) à chaque niveau.+arrayWithObject:
pour la création d'un NSArray avec un seul objet.Juste pour vous donner une idée de ce que la création du dictionnaire de l'image liée pourrait ressembler dans le code... (je suis ignorant de votre choix des noms de variables et à l'aide de deux approches différentes pour l'exhaustivité.)
Je ne suis pas sûr de comprendre l'objectif de base ici.
Il semble que lors de l'exécution, vous êtes en train de construire un profond dictionnaire avec de nombreux nœuds enfants. Mais vous êtes en train de construire ensemble statique de code... pourquoi ne pouvez-vous pas tout simplement faire un fichier plist (comme celle que vous avez eu une image de l') et de lire que dans un NSDictionary? Les deux NSDictionary et NSArray des méthodes qui vous permettent de simplement lire un fichier et un tout rempli de l'objet. Ensuite, il est beaucoup plus facile à modifier et à comprendre. Cette méthode est
dictionaryWithContentsOfFile
.Si toutes les données sont réellement créé lors de l'exécution, avant d'entrer dans le dictionnaire, il semble comme vous voulez très différents, récursive, le style de code plutôt que le plat des exemples donnés.
Enfin, personnellement, je n'aime pas le
dictionaryWithObjects:forKeys:
méthode dans NSDictionary pour la construction d'un dictionnaire. Si vous avez à faire les choses de cette façon j'ai beaucoup préfèrent la méthode de remplacementdictionaryWithObjectsAndKeys:
qui fait la même chose mais qui garde les clés avec les objets:première de .. super! merci .. j'apprécie vraiment l'explication et l'extrait de code.
Depuis que vous m'avez donné une bonne explication j'espère que vous ne me dérange pas de me poser quelques questions.
Tout d'abord, j'ai fait comme vous l'avez suggéré, et c'est ce que je suis venu avec :
(J'ai utilisé ma liste de propriété au lieu de l'exemple cette fois, c'est donc là que l'exploration de la table obtient son( ou doit obtenir son ) structure d'arbre).
http://img509.imageshack.us/img509/7523/picture2lsg.png
Également fait quelques recherches et essayé autre chose avec une autre entrée..
J'ai décidé de tester deux de ces cependant, c'est ce que je veux. Il me donne un
EXC_BAD_ACCESS
erreur.Je me demandais aussi depuis que j'ai vu vous aide dans votre extrait de code, ne pourriez-vous aussi utiliser NSString puisque c'est ce que l'plist utilise.. pourrait être totalement d'ici, bien sûr,
et la troisième question est à propos de mon approche possible pour mon application.
J'ai un analyseur xml qui enregistre certaines informations dans les différents tableaux.
Je veux utiliser cette information pour ma drilldown UITableviews (infoFirstScreen[] infoSecondScreen[] infoThirdScreen[]).
L'information fournie doit être connecté comme l'arbre que je vous ai montré ci-dessus.
C'est la raison pour laquelle je voulais construire le dictionnaire dans le code afin que je puisse prendre les infos de mes tableaux et de l'insérer ici.
Ma question pensez vous que ma démarche est correcte, incorrecte ou est-il un moyen plus rapide?
nouveau apprécie vraiment l'explication 😉