2009-07-29 12 views
0

J'ai copié ces messages à partir d'un forum où j'ai posté récemment, mais n'a pas reçu de réponse.Sauvegarde tableau à PList à partir du contenu téléchargé en mode tableau sur l'iPhone

J'ai la base pour mon code tout setup, c'est une table d'exploration avec un contrôleur de navigation qui charge les données dans un nsmutabledictionary à partir d'un plist avec des valeurs vides, exprès. Sur commande, l'application télécharge ensuite les informations qui sont ensuite définies, setValue, dans NSMutableArray. Le problème est que ce NSMutableArray est à 3 niveaux de la racine du plist. Je cherche un moyen de remplacer le tableau dans le plist qui est chargé et enregistré dans l'appdelegate. Comment je fais ça? L'aide est très appréciée.

Cela n'a probablement pas beaucoup de sens. Dans l'AppDelegate, il charge un fichier plist dans un NSMutableDictionary. Le plist est comme ceci:

Racine
> Titre (String)
> lignes (Array)
> > Point 1 (Dictionnaire)
> > > Titre (String)
> > > ID (Chaîne)
> > > ItemList (groupe)
> > > > Point 1 (Dictionnaire)
> > > > > Titre (String)
> > > > > ID (String)
> > > > > Valeur (String) ------- ---- Valeur vide qui est téléchargé
> > > > Point 2 (Dictionnaire)
> > > > Point 3 (Dictionnaire)
> > > > Point 4 (Dictionnaire)
> > Point 2 (Array)
> > Point 3 (Array)
> > Elément 4 (tableau)

Le tableau de lignes est envoyé à RootVie wController. Lorsque l'un de ces éléments est sélectionné dans TableView et qu'une nouvelle instance est créée avec la source de données de table définie sur ItemList de cet élément sélectionné. Lorsque l'utilisateur appuie sur un bouton, il télécharge les valeurs et en utilisant [setValue: forKey: @ "Value"] les valeurs sont définies dans le tableau. Voici où il se perd. Je dois maintenant redéfinir ce tableau ItemList dans le dictionnaire racine principal, puis le dictionnaire racine renvoyé à AppDelegate, afin que l'on puisse appeler applicationWillTerminate [self.data writeToFile:] et que les informations téléchargées n'aient pas besoin d'être téléchargées. la prochaine fois.

Répondre

0

Je ne suis pas totalement sûr de comprendre votre problème.Une fois la nouvelle valeur renseignée dans le tableau, il suffit d'utiliser setObject: forKey: sur le dictionnaire pour remplacer l'ancien tableau.

Si vous éprouvez des difficultés à obtenir une référence au délégué de l'application, vous pouvez utiliser [[UIApplication sharedApplication] délégué]

si le problème est que vos dictionnaires et les tableaux sont imbriqués de telle sorte que vous devez changer plus Pour définir la valeur, utilisez mutableCopy pour produire des tableaux et des dictionnaires mutables à partir du plist en charge. Alternativement, pensez peut-être à utiliser une représentation de données sophistiquée, plutôt que de lire et d'écrire un format plist.

0

Je crois que je devrais utiliser forKeyPath