Gestisci la persistenza delle entità su iOS in più punti: CoreData sul dispositivo, iCloud e su un'API REST

2

Per le esigenze di un progetto, vorrei mantenere i dati contenuti in Core Data in più punti a seconda dello stato dell'utente.

  • Se l'utente è registrato sulla mia API - > Persistere i dati sulla mia API.
  • Se l'accesso è effettuato su iCloud - > Persiste i dati su iCloud
  • In ogni caso - > Persistere i dati sul dispositivo.

In effetti, con questo schema, i dati potevano essere salvati sul dispositivo, su iCloud e sulla mia API. Abbiamo bisogno di duplicare i dati per essere in grado di mantenere gli ultimi dati disponibili anche se l'utente non ha effettuato l'accesso su iCloud o sull'API.

Ecco un'implementazione di come penso che questa funzionalità sarà implementata.

Per uniformare il processo di esecuzione delle richieste CRUD, penso a crea un PersistenceManager che consente di eseguire richieste CRUD per entità dipendenti dallo stato dell'utente. (Se ha effettuato l'accesso all'API o su iCloud o da nessuna parte).

Ecco alcuni metodi che la PersistenceManager implementerà:

Salva richiesta

Questo metodo salverà un'entità in base allo stato dell'utente.

Se l'utente è connesso all'API: persist sull'API Se l'utente è registrato su iCloud: salva su iCloud In ogni caso - > Salva sul dispositivo con Core Data.

Ogni dato memorizzato avrà un timestamp per essere sicuro di ottenere l'ultima versione dei dati.

Leggi richiesta

Questo metodo recupera le entità solo dal dispositivo in modalità asincrona.

Per ogni richiesta Salva, Aggiorna o Elimina eseguita, se l'utente è connesso all'API o con iCloud, uno o entrambi invieranno una notifica all'applicazione client in cui l'utente è loggato per recuperare i dati da API o iCloud e li memorizzerà in Dati di base.

Quindi i dati che l'utente desidera leggere viene restituito da Core Data.

Per recuperare la notifica dall'API, penso che utilizzare socket attraverso la mia API e la mia app iOS per comunicare. Ma non so come posso fare lo stesso meccanismo per iCloud. Qualche suggerimento?

Richiesta di aggiornamento

Stesso meccanismo rispetto alla richiesta di salvataggio ma per i dati di aggiornamento.

Elimina richiesta

Stesso meccanismo che per la richiesta di salvataggio ma per i dati di cancellazione.

Non ho familiarità con questi problemi, e vorrei avere i tuoi consigli su questo.

Grazie mille!

    
posta Jean Lbr 05.05.2014 - 13:36
fonte

0 risposte

Leggi altre domande sui tag