In base alla propria esperienza, per un'app iOS che utilizza solo un thread principale NSManagedObjectContext, qual è il modo migliore per mantenere le impostazioni utente e i dati memorizzati nella cache dal server a disco rispetto all'affidabilità e alle prestazioni?Miglior strategia di salvataggio dei dati principali (quando salvare i dati sul disco)
vedo prossimi opzioni:
- salvare contesto alla fine di ogni cambio
- salvare contesto solo l'uscita di app (come in campioni di Apple)
- risparmiare contesto all'uscita di app, andare a fondo o non essere attivo (telefonata in arrivo ad esempio)
- aggiungere il timer per salvare il contesto di volta in volta se ha qualche variazione
- chiamare la routine di salvataggio ritardata appositamente preparata che si riunirà insieme etere chiama per salvare il contesto per assicurarsi che non sparino troppo spesso
Attualmente usiamo la prima opzione, quindi posso dire che l'affidabilità di esso è molto buona, i dati vengono salvati anche dopo che Xcode termina il app durante la sessione di debug, ma le prestazioni possono risentire quando l'app diventa sempre più complessa, esp. quando le modifiche al DB possono verificarsi in qualsiasi momento del flusso dell'app a causa del caricamento asincrono dei dati dal server.
D'altro canto, il salvataggio di alcuni eventi dell'app (uscita, accesso allo sfondo, ecc.) Offre le migliori prestazioni, ma dalla tua esperienza puoi dire che è sufficiente per garantire che l'utente non perda i dati ?
Grazie per il collegamento, anche se le soluzioni semplici si sono dimostrate meno soggette a errori, finché non sarà necessario il 100% abbiamo deciso di non utilizzare i dati principali multi-thread. – zubko