Ankit,
Ecco il tl; dr skinny: usa Core Data.
Ecco la forma lunga:
Mentre si potrebbe utilizzare molti criteri per scegliere tra Core Data, un ORM (FMDB) o chiamate SQLite dirette, il costo reale di questa scelta viene dal vostro tempo di usarla, Apple supporto e leva da altri progetti. (RESTKit, che associa i servizi REST a Core Data, è popolare in questi giorni.)
Quindi, una grande percentuale del tempo, diciamo 90 +% (una statistica composta), la risposta su iOS sarà utilizzata Dati principali. Perché? Una volta capito e sviluppato alcuni piccoli metodi di supporto, Core Data ti tiene in un mondo informatico coerente: il grafico dell'oggetto Objective-C. Core Data ti insegnerà come utilizzare un linguaggio dinamico che aiuterà ogni altro aspetto della tua programmazione iOS. Quindi, sei più produttivo. Non combattere il quadro.
Se si trasferisce uno schema SQLite grande e complesso di database & da un'altra app, potrebbe essere conveniente utilizzare FMDB o SQLite. Ma ne dubito. Il tempo impiegato per scrivere una semplice app da riga di comando basata su Mac per migrare il DB in un DB di dati di base è un compito semplice e finito. È quasi garantito che si debba riscrivere la maggior parte della logica aziendale in Objective-C. (Sì, C++ e Objective-C++ sono entrambe buone tecnologie. La tua logica di business del database è stata sintonizzata per funzionare su un dispositivo con memoria limitata? Non lo credevo.)
I dati di base ottengono un abbandono alle prestazioni. È davvero abbastanza veloce Devi solo usarlo diversamente da come usi un DB. In particolare, si esegue quasi sempre il recupero dei dati dall'archivio e si raffina utilizzando i predicati direttamente sui vari set e array.Sui dispositivi iOS, dove il flash è sorprendentemente lento, questa strategia di over-fetch è particolarmente efficace. In realtà hai molta RAM su questi dispositivi, usala per ottenere prestazioni. (Sì, so che questa è un'apparente contraddizione con la mia precedente bussata alla logica di business portatile, ma in realtà il codice trasferito da un ambiente desktop o server ha così tante ipotesi implicite sulla velocità del disco, sulla quantità di memoria e sulla realtà di una VM con un backing store, non funzionerà bene su un dispositivo a batteria con memoria limitata con un modello di memoria funky. [Non funzionerà molto bene sui dispositivi Android.]) Inoltre denormalizzi i dati per semplificare visualizzandolo in vari widget dell'interfaccia utente di iOS e Mac OS X. Ci sono alcune applicazioni in cui Core Data sarà più lento di un DB SQLite equivalente. Quelli sono stati dettagliati altrove. L'unica importante affermazione è che le attività in cui gli ID sono definiti dai database upstream raggiungono le prestazioni di Core Data. Ma può essere in qualche modo mitigato dall'indicizzazione giudiziosa e dalla trascuratezza.
La cosa da ricordare sui dispositivi mobili è che le dimensioni del database, poiché si tratta di dispositivi mobili sulle foglie di Internet, sono generalmente di dimensioni modeste. Quindi, le prestazioni sono più facili da raggiungere. Molte lezioni dal mondo dei server potrebbero non essere applicabili a questo mondo mobile, alimentato a batteria.
In altre parole, è necessario andare "all in" per utilizzare Objective-C su iOS/Mac OS X, inoltre si otterranno importanti vantaggi in termini di produttività dall'utilizzo di Core Data.
Andrew
Quali dati stai memorizzando, quanta parte c'è, quale tipo di recupero devi fare, è modificabile dall'utente? – jrturton
Ecco qual è la mia domanda .. Intendo su quale base dovrei decidere quale usare e ci sono delle linee guida fornite da Apple o da qualcun altro .. o è qualcosa che verrà da me con il tempo? –
Se è necessario aggiornare, inserire o eliminare più righe contemporaneamente, Core Data non sarà una buona scelta. – AechoLiu