Dati di Archiviazione domanda
-
24-09-2019 - |
Domanda
Un altro newbie domanda:Qual è il modo migliore per memorizzare i dati in una applicazione Cocoa scritto in Obj-C?Per esempio se voglio creare una sorta di "quizzer" che i quiz l'utente con pre-scritto e scritto dall'utente) domande?Come faccio a memorizzare queste domande e le risposte?Dati Di Base?
Grazie!
Soluzione
Naturalmente è Dati Di Base!
In grado di gestire tutto..date un'occhiata qui: http://developer.apple.com/macosx/coredata.html
E ' una API in grado di gestire:
- ORM tra database e di run-time di oggetti
- persistenza
- strumenti automatici di costruzione (come un ER-editor)
- è pronto, fuori dalla scatola, non è necessario implementare quasi nulla..si sarà già avere accesso ai vostri dati dal proprio interrogazione all'oggetto controller
Probabilmente questa soluzione è over-size per il vostro problema, ma imparerete come usare un semplice caso, e mi sarà utile in futuro..
Altri suggerimenti
Core Data è sicuramente una scelta eccellente, come ha mostrato @Jack. Ci sono alcune altre opzioni come bene.
-
NSCoding
- Potete fare i vostri oggetti del modello sono conformi al protocollo NSCoding (simile ajava.io.Serializable
), il che significa che sarebbe in grado di scriverli direttamente in file. Ho scoperto che questa è una grande opzione quando non ho enormi quantità di dati a persistere, ed i dati che sto persistente ha una struttura relativamente semplice. -
SQLite - Se i dati sono molto relazionale, si può prendere in considerazione l'utilizzo di un database (probabilmente SQLite) direttamente. Core Data è un negozio oggetto, e mentre gestisce le cose come le relazioni tra gli oggetti, non permette di fare cose veramente utili come
INNER/LEFT/OUTER/CROSS/NATURAL JOIN
o da altri operatori multi-tavolo. -
NSUserDefaults
- se i dati è molto piccola e si trova essenzialmente coppie chiave-valore, allora probabilmente si può buttare tutto in un oggettoNSUserDefaults
, che persisterà per voi nel file delle preferenze. Tuttavia, anche se i dati è semplice,NSUserDefaults
potrebbe non essere la migliore opzione se si dispone di un sacco di esso.