Sviluppando app per iOS è comune dover disporre di un layer di persistenza locale, e una delle scelte comuni, per modelli dati non trivial è quello di usare un DB SQLite e gestirlo attraverso Core Data o con uno dei molti wrapper a disposizione come Magical Records o simili.
Durante lo sviluppo, vuoi per un controllo sulla coerenza dello stato dei record, o per un’operazione di debug più approfondita può essere necessario accedere direttamente al database SQLite estraendolo dal simulatore durante il test dell’applicazione.
Vediamo come attraverso due semplici comandi.
Come estrarre il file SQLite dal simulatore
Estrarre il file dal simulatore è molto semplice, visto che di fatto si tratta di un file fisico sul disco del computer utilizzato per sviluppo. Per estrarre il file è sufficiente e aprire un terminale, digitare il comando seguente (o raggiungere la stessa cartella via Finder):
cd ~/Library/Application Support/iPhone Simulator/7.0.3-64/Applications
ovviamente avendo cura di sostituire il valore 7.0.3-64 con quello della versione di iOS usata dal simulatore avviato nel vostro ambiente di sviluppo.
Dentro questa cartella ci sono una serie di cartelle con nomi composti da sequenze randomiche di caratteri, come mostrato in figura sotto:
Queste cartelle contengono i dati relativi a diverse run del simulatore ed in particolare le informazioni inerenti alle app testate. Nel caso ci siano diverse cartelle e non si voglia perdere tempo a cercare dentro ognuna la app sotto test è anche possibile rimuoverle tutte e rilanciare il simulatore in modo che ne ricrei soltanto una. In ogni caso dentro alla cartella ci sono:
- una cartella Documents che contiene il DB SQLite cercato;
- un cartella NomeApplicazione.app che contiene i file .xib, .plist e le immagini usate per la UI
Perchè usare SQLite su dispositivo mobile
SQLite è un sistema di DB on a file che ha trovato largo impiego sui dispositivi mobili per la sua duttilità derivante dal consentire, tramite un semplice file binario, uno storage relazionale di un modello dati anche molto grande e complesso. Le performance in lettura e scrittura sono di assoluto riferimento, tanto che spesso durante lo sviluppo di una app lo storage SQLite viene usato come cache per richieste I/O più lente come per esempio le request REST verso una API di backend.
Questi motivi, uniti alla disponibilità di librerie ORM che consentono di astrarre le operazioni CRUD sul database, rendono la scelta di un layer di persistenza di questo tipo sempre più diffusa non solo per le esigenze di storage classico, ma anche per quelle di serializzazione non volatile (stato applicazione fra molteplici ViewController, recupero in caso di crash, metainformazioni, etc).
ELbuild sviluppa app iOS e Android dal 2010, affidati a noi per portare la tua idea imprenditoriale sui dispositivi mobili. Visita la sezione Contatti del nostro sito web per sapere come possiamo esserti d’aiuto.