Domanda

sto sviluppando la mia prima applicazione per iPhone, e durante l'implementazione le preferenze degli utenti, ho alcune domande su come implementare al meglio questo.

Si supponga che il modello di base MVC: dati MainView visualizzazione memorizzati in un oggetto Modello; MainViewController gestire la logica dell'applicazione.

Per le opzioni, ho un OptionsView ed un OptionsViewController. Un RootViewController gestisce lo scambio dei punti di vista principali e Opzioni.

Prima di tutto, per quanto riguarda i dati di opzioni? Dovrei voler fare una classe NSOjbect-derived memorizzarli (un OptionsModel)? O forse un semplice NSDictionary sarebbe sufficiente?

In secondo luogo, che possiede i dati di opzioni? Sono preferenze dell'applicazione, ma la loro memorizzazione nel AppDelegate sembra sbagliato. MainViewController si preoccupa per lo più sulle opzioni, e OptionsViewController ha bisogno di modificarli, ma quei ragazzi non sanno gli uni degli altri, né devono, probabilmente. RootViewController conosce entrambi, quindi è in una buona posizione per passare le opzioni tra di loro, ma ancora una volta, che sembra sbagliato.

Infine, MainViewController avrà spesso bisogno di accedere alle opzioni. Doveva chiamare nel modello opzioni di volta in volta per ottenere qualche opzione, o di memorizzare nella cache la sua copia? Non mi piace l'idea di overhead in più il recupero dei dati opzioni, ma avendo la MainViewController hanno copie che possono ottenere fuori sincronia inoltre, non è molto attraente.

È stato utile?

Soluzione

Dai un'occhiata alla NSUserDefaults . Si tratta di una classe di raccolta stile dizionario progettata per questo scopo particolare.

di memorizzare e recuperare valori di default in questo modo:

// Fetch a default
BOOL deleteBackup = [[NSUserDefaults standardUserDefaults] boolForKey:@"DeleteBackup"];

// Save a default
[[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"DeleteBackup"];

NSUserDefaults prenderanno automaticamente cura di lettura e la serializzazione su disco.

Per quanto riguarda l'altra domanda, dipende l'architettura complessiva della vostra applicazione. L'invio di notifiche quando l'OptionsViewController è finito suona come un approccio ragionevole per me. Tuttavia, si potrebbe anche solo definire un metodo sul vostro MainViewController o app delegato (es. "-ReloadUserDefaults") che è possibile richiamare dal vostro OptionsViewController quando è finito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top