Diversi metodi di archiviazione in iOS

Di seguio elenco una serie di diversi metodi per archiviare dati in iOS

NSUserDefaults

Serve a memorizzare semplici preferenze dell'utente, niente di troppo complesso o sicuro. Se si sta sviluppando un’app che ha una pagina di impostazioni con alcune opzioni, è possibile salvare i dati qui. (Vedi @AppStorage per MacOS)

Keychain

Le PLists Sono utilizzate per memorizzare dati strutturati più grandi: è un formato davvero flessibile e può essere utilizzato in un gran numero di scenari. Vediamo alcuni esempi:

  • * Archiviazione di contenuti generati dall'utente: per esempio un semplice elenco di Geopoint che verrà mostrato da una mappa o da un elenco.
  • * Fornire semplici dati iniziali all’ app: in questo caso la PList sarà inclusa nel NSBundle, invece di essere generata dall'utente e riempita dai dati dell'utente.
  • * Separare i dati necessari per un particolare modulo della tua applicazione da altri dati. Ad esempio, i dati necessari per creare un tutorial di avvio step-by-step, in cui ogni passaggio è simile agli altri ma richiede solo dati diversi. L'hardcoding di questi dati riempirebbe facilmente il tuo codice, quindi potresti invece utilizzare i plist per archiviare i dati e leggerli da li.
  • * Si sta programmando una libreria o un framework che potrebbe essere configurato in qualche modo dallo sviluppatore che lo utilizza.

Object archiving

Può essere utile per serializzare oggetti più complessi, magari pieni di dati binari, che non possono essere (o che non vuoi siano) mappati su strutture più semplici come plist.

Core Data

Core Data è uno strumento molto potente, può essere supportato da diversi archivi persistenti (SQLite è solo uno di questi, ma puoi anche scegliere file XML o puoi persino scrivere il tuo formato!) e fornisce relazioni tra gli elementi. È complesso e fornisce molte funzionalità utili per lo sviluppo, come KVO e contesti. Dovrebbe essere utilizzato per set di dati di grandi dimensioni con molti record correlati, che potrebbero essere generati dall'utente o forniti da un server.

SQLite puro

È utile quando è necessario un accesso davvero veloce a un'origine dati relazionale (Core Data introduce un sovraccarico) o se è necessario supportare lo stesso formato SQLite su più piattaforme (non dovresti mai toccare il SQLite interno a CoreData: usa il suo formato, quindi non puoi semplicemente "importare" un SQLite esistente in CoreData).

Memoria nel server web

se è necessario archiviare i dati su un server è perché il dispositivo non dovrebbe essere l'unico proprietario di quei dati. Ma se hai solo bisogno di sincronizzare la stessa app su diversi dispositivi iOS (o anche con una versione dell'app con porting per Mac), puoi anche utilizzare lo spazio di archiviazione di iCloud.