2012-07-03 11 views
5

Il mio progetto ha bisogno di memorizzare nella cache i dati del dispositivo iOS recuperati da un servizio Web remoto. L'idea è che il controller della vista chiederà alla cache tutti gli oggetti del documento che ha, per esempio, e in background richiederà un aggiornamento dal servizio web, restituendo al controller della vista tutti i nuovi oggetti documento ricevuti. Mi chiedo se sia possibile per i controller di visualizzazione utilizzare un NSFetchedResultsController che recuperi gli oggetti corrispondenti ai criteri che può trovare localmente nel database e chiede anche in modo asincrono aggiornamenti dei dati dal servizio Web in background. In tal modo, NSFetchedResultsController aggiornerà il database e, naturalmente, attiva il metodo didChangeObject del delegato FetchedResultsController in modo che le visualizzazioni possano aggiornarsi di conseguenza. Suona ragionevole? Hai qualche suggerimento per implementare una cosa del genere?Utilizzo dei dati principali come cache locale per i dati recuperati dai servizi Web remoti

+1

Sì, questa è anche la soluzione tipica ... – graver

+1

Non voglio che tutti i controller di visualizzazione abbiano bisogno di sapere che il backfill del CD sta accadendo, quindi penso di aver bisogno di implementare qualcosa che cerchi ciò che è stato richiesto dal CD, e in background va al servizio web per assicurarsi che il CD abbia l'ultima versione. – DarylWM

risposta

6

Per il nostro progetto, abbiamo finito per semplificare un po 'il problema. Tuttavia, nel viaggio di scoperta, ci siamo imbattuti in NSIncrementalStore, che è solo il biglietto per il problema posto nella domanda. In sostanza ti dà il controllo su come e dove il CD persiste i dati. Ecco a really nice post about it e an easy-to-understand example. A dire il vero non c'è molto di doco in giro, ma questi post mi hanno davvero aiutato ad andare avanti.

Problemi correlati