Qual è il modo migliore per caricare i dati dal DB all'avvio dell'applicazione?

1

Sto scrivendo un'applicazione iOS in XCode. I dati caricati per le moltitudini di viewcontrollers vengono generalmente caricati dal DB su viewDidLoad() o viewDidAppear() per quel particolare VC, oppure vengono passati da un VC a un altro su% clic del pulsante% di_dezione.

Mi chiedo se esiste un modo migliore / più efficace per farlo?

Devo caricare tutti i dati al momento dell'avvio dell'applicazione? A mio parere, questa non sarebbe una buona idea considerando che richiederebbero molti thread diversi che estraggono contemporaneamente da diverse parti del DB (o sincronizzati in modo sincrono) all'inizio. Sono preoccupato che questo rallenterebbe notevolmente il lancio dell'app.

Inoltre, penso che per aggiornare i dati, le estensioni IBAction e viewDidLoad() non possano essere rimosse del tutto comunque. In realtà, non vedo alcun particolare vantaggio nel fare un pieno carico al lancio dell'applicazione, ma volevo essere doppiamente sicuro di essere corretto in questa valutazione e non mi manca nulla.

C'è qualche vantaggio nel fare il carico in questo modo? C'è qualche svantaggio nel farlo nel modo in cui l'ho già impostato?

    
posta Alek Piasecki 09.11.2017 - 17:43
fonte

1 risposta

2

Un approccio che ho usato e visto usato per questo genere di cose è che puoi caricare l'applicazione e avviare i thread in background che avviano i dati pre-fectching di cui sai di aver bisogno. In genere, si caricano i dati per la vista iniziale prima di visualizzarli. Ad esempio, diciamo che hai una pagina / finestra principale che ha un menu 'messaggi'. Nel menu dei messaggi, vuoi mostrare quanti nuovi messaggi ci sono. Si recuperano gli ID dei nuovi messaggi e si visualizza il conteggio. Allo stesso tempo, inizi a recuperare i dati per ciascuno dei nuovi messaggi.

Questo può produrre un'esperienza utente davvero piacevole perché spesso, quando l'utente seleziona per visualizzare i messaggi, hai finito di caricarli. Anche se non hai finito, hai un vantaggio iniziale che riduce il tempo di attesa.

Lo svantaggio è che è più difficile da progettare e implementare perché richiede il coordinamento dei thread e l'interfaccia utente deve gestire la situazione in cui l'utente ha selezionato qualcosa che non è ancora stato caricato. Un trucco è creare un livello dati che nasconda questa complessità e appaia come un carico pigro verso l'esterno. Chiami per i dati e blocca finché non è disponibile. Puoi anche utilizzare questo livello per rideterminare la priorità del recupero in base a ciò che l'utente sta tentando di fare.

    
risposta data 09.11.2017 - 18:44
fonte

Leggi altre domande sui tag