2013-02-25 19 views
6

OK, ammetto che lo NSUserDefaults, essendo una cosa specifica per Mac (e io che sono un programmatore Mac negli ultimi due anni), è una delle cose che non ho approfondito così tanto .. . Ecco alcuni problemi/domande che ho trovato:Problemi/Domande riguardanti NSUserDefaults

Capisco che NSUserDefaults è fondamentalmente uno NSMutableDictionary scritto come .plist.

Le mie domande:

  1. Dato che sto correndo OS X 10.7 (Lion) e dopo aver attivato Sandbox, dove è il file .plist di mia app? (Ho la ricerca sia in ~/Library/Preferences/com.example.myapp.plist e ~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist ma nessuno di questi sembra valido

  2. Capisco che questo file .plist viene creata la prima volta che i lanci di app, giusto?

  3. registerDefaults: deve essere utilizzato in applicazioni lancio (ad esempio in awakeFromNib) e fornire un Dizionario di valori predefiniti che vengono immediatamente memorizzati nel file .plist, e cambiato solo se un valore diverso è impostato ad un certo punto, giusto?

  4. Quando stiamo impostando una chiave specifica -Value coppia, è quella coppia automaticamente e io salvato immediatamente nel file .plist? E se sì, perché/quando dovremmo usare synchronize? (Lo sta utilizzando ogni volta un po 'di valore è impostato su un peso inutile, o dovrebbe essere riservato a casi particolari?)


Sidenote: Spero che nessuno si lamenta il mio uso del tag osx . Tuttavia, sono davvero stanco di vedere le risposte relative a Cocoa Touch/iOS alle mie domande (principalmente) relative a OSX. Così, qui siete ... :-)


EDIT: Per qualche informazione veramente utile in materia, si prega di dare un'occhiata alla risposta accettata, così come i commenti di sotto di essa.

+1

+1 per una bella domanda. –

+1

Perché qualcuno dovrebbe lamentarsi del tag [tag: osx]? È lì per essere usato. – Caleb

+0

@Caleb Sono abbastanza familiare con SO e sto cercando di evitare infinite modifiche. Bare con me! lol :-) –

risposta

3

Risposta 1. La directory home è nascosta in Lion, quindi non è possibile immettere il percorso (senza visualizzare la cartella non è possibile accedere alla cartella dal Finder). Puoi utilizzare Path Finder per spostarti tra le tue directory nascoste.

Risposta 2. Non sempre. Possono esserci più plists in una singola applicazione. Pochi vengono creati al primo avvio, pochi in alcune azioni specifiche. In realtà dipende da quando il file plist viene creato e come usarlo.

Risposta 3.registerDefaults: I valori predefiniti dei registri si verificano quando l'utente non ha impostato altri valori su tale proprietà. Non sovrascriverà ciò che l'utente ha memorizzato quando l'app verrà aperta in seguito. Puoi usarlo ovunque, ma come dichiarato sarà usato una volta.

Risposta 4. Per l'applicazione Mac OSX non ci sono problemi di prestazioni e di overkill, comunque per iOS. È sempre meglio usare [[NSUserDefaults standardUserDefaults] synchronize];

+0

cosa intendi per "non essere in grado di entrare nel percorso"? –

+0

Senza vedere la cartella non si può entrare nella cartella dal Finder –

+0

Grazie per la risposta! :-) ** Ancora una domanda/chiarimento: ** Sicuramente * posso * vedere i file nascosti e navigare praticamente ovunque. Tuttavia, il file 'my-app-name.plist' nella posizione sopra (' ~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist') contiene * solo * valori che ho impostato usando 'setObject: forKey:' e non quelli tramite 'registerDefaults:'. Sono abbastanza sicuro che i valori * siano * impostati (li ho testati - dopo la registrazione e sono lì), tuttavia non sono * in * .plist'. Com'è quello? –