Domanda

Sto cercando di ottenere una matrice da un plist come suggerito in una risposta qui, ma non funziona.Qualcuno può dirmi cosa mi manca?

Ecco cosa plist sembra....un'altra cosa strana è che io non riesco a farlo aprire in un file di testo??quando mi sembra di immondizia.....ma si guarda bene in property list editor:

<?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>

Ecco il codice che sto utilizzando.....il dizionario è un NSMUtableDictionary e accountsArray è un NSMustableArray che sono nella .h file.

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

 dictionary = tempDictionary;
 [tempDictionary release];


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

 accountsArray = nameArray;

 [nameArray release];

Mi manca qualcosa?Avvitare qualcosa?

Grazie...

È stato utile?

Soluzione 2

Alla fine ho capito di lavoro in questo modo:

    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"];

Altri suggerimenti

Beh, ci sono un certo numero di questioni in corso di realizzazione;prima di tutto plist è probabilmente un binario di proprietà, e non si tratta di un XML elenco di proprietà.Questo non ha molta importanza sul codice lato delle cose, ma deve servire a spiegare i problemi con l'apertura come testo normale.

Secondo, rilasciando tempDictionary, si sono, inoltre, il rilascio di dictionary, in quanto entrambi puntano allo stesso oggetto.Questo dovrebbe servire a spiegare perché il tuo codice non funziona.Provare autorelease, o , semplicemente, dictionaryWithContentsOfFile: e nix il rilascio frase complessivamente.(dictionaryWithContentsOfFile: sarà autorelease il suo valore di ritorno.)

Si anche ripetere il rilascio errore sulla seconda frase;l'operatore di assegnazione (=) non copia in Objective-C;si assegna.

Edit:Quest'ultimo non è vero quando si utilizza la proprietà di notazione;supponendo che le proprietà sono definite; self.accountsArray = nameArray sarebbe (probabilmente) copia dell'array in oggetto.

Rieditare:Il codice corretto:

dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:accountsFilePath];
accountsArray = [dictionary objectForKey:@"username"];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top