Question

Je suis en train d'obtenir un tableau d'un plist comme suggéré sur une réponse ici, mais il ne fonctionne pas. Quelqu'un peut-il me dire ce que je suis absent?

Voici ce que le plist ressemble .... une autre chose étrange est que je ne peux pas obtenir ce pour ouvrir dans un fichier texte brut ?? quand je fais ressemble à ordures ..... mais il semble bien dans l'éditeur de liste de propriétés:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>count</key>
<array>
     <integer>5</integer>
</array>
<key>username</key>
<array>
     <string>johnsmith</string>
</array>
</dict>
</plist>

Voici le code que je utilise ..... le dictionnaire est un NSMutableDictionary et accountsArray est un NSMustableArray qui sont dans le fichier .h.

     NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];

 dictionary = tempDictionary;
 [tempDictionary release];


 NSMutableArray *nameArray = [[NSMutableArray alloc] init];
 nameArray = [dictionary objectForKey:@"username"];

 accountsArray = nameArray;

 [nameArray release];

Est-ce que je manque quelque chose? Vissant quelque chose?

Merci ...

Était-ce utile?

La solution 2

Je suis enfin fonctionner comme ceci:

    dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];      


 if (accountsArray == nil){

     accountsArray = [[NSMutableArray alloc]init];
 }

 if (countArray == nil){

     countArray = [[NSMutableArray alloc]init];
 }



 countArray = [dictionary objectForKey:@"count"];
 accountsArray = [dictionary objectForKey:@"username"];

Autres conseils

Eh bien, il y a un certain nombre de questions en cours de réalisation; d'abord la plist est probablement une liste de propriétés binaires, et non en fait une liste de propriétés XML. Cela n'a pas d'importance beaucoup plus du côté du code des choses, mais devrait servir à expliquer les problèmes avec l'ouverture sous forme de texte.

En second lieu, en libérant tempDictionary, vous êtes également dictionary publie une, comme ils pointent tous deux vers le même objet. Cela devrait servir à expliquer pourquoi votre code ne fonctionne pas. Essayez autorelease, ou tout simplement dictionaryWithContentsOfFile: et Nix l'expression de libération alltogether. (dictionaryWithContentsOfFile: sera AutoRelease sa valeur de retour.)

Vous répétez également l'erreur de libération de la deuxième phrase; l'opérateur d'affectation (=) ne copie pas en Objective-C; il cessionnaires .

Edit: Ce dernier n'est pas vrai lorsque vous utilisez la notation de la propriété; en supposant que les propriétés sont définies; self.accountsArray = nameArray serait (probablement) copier le tableau dans l'objet.

remodifier: code correct:

dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];
accountsArray = [dictionary objectForKey:@"username"];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top