2009-07-01 25 views
15

Sto tentando di implementare uno stato di salvataggio per la mia app per iPhone.Lettura di dati da un file plist

Ho un file plist chiamato SaveData.plist e lo leggo in via seguente

NSString *pListPath2 = [bundle pathForResource:@"SaveData" ofType:@"plist"]; 
NSDictionary *dictionary2 = [[NSDictionary alloc] initWithContentsOfFile:pListPath2]; 

self.SaveData = dictionary2; 
[dictionary release]; 

Il file Plist ha membri

SavedGame che è un valore booleano per dire l'applicazione se non c'è davvero dati validi qui (se non escono dalla app nel bel mezzo di un gioco, non voglio loro di essere un punto di ripristino.

punteggio che è un NSNumber. tempo che è un NSNumber

Playfield che è un array di 16 elementi di NSNumbers

Come accedere a quegli elementi all'interno del NSDictionary?

risposta

26

Prova [NSDictionary objectForKey:]

dove la chiave è il nome del membro nel plist.

Ad esempio:

BOOL save = [[dictionary2 objectForKey:@"SavedGame"] boolValue]; 

sarà memorizzare l'oggetto memorizzato nel plist per il SavedGame chiave in un nuovo BOOL denominata Salva.

Immagino che il vostro SavedGame booleana è effettivamente memorizzato nella NSDictionary come NSNumber, da qui l'uso di BOOLVALUE per ottenere il valore booleano del NSNumber.

Prova questa documentazione: Apple NSDictionary Reference.

+5

Usare sempre -objectForKey: se stai chiamando direttamente - se leggi i documenti, -valueForKey: è usato per l'osservazione dei valori-chiave e Cocoa Bindings. Non restituirà il risultato sbagliato, ma in questo caso svolge un lavoro non necessario. –

2

per l'impostazione di Bool Valore È possibile utilizzare:

[Dictionary setBool:TRUE forKey:@"preference"];

per ottenere valore Bool è possibile utilizzare:

[Dictionary boolForKey:@"preference"];