2009-08-23 5 views
47

Poiché CoreData è diventato disponibile per l'iPhone in OS 3.0, è pensato per essere la risposta alla persistenza dei dati e sostituire tutte le esigenze di direct SQLite?Usa CoreData o SQLite su iPhone?

Quali motivi esistono per utilizzare ancora SQLite? Quali sono i vantaggi/gli svantaggi di SQLite rispetto a CoreData?

risposta

59

Questa è una domanda comune qui:

In sintesi, Core Data può semplificare notevolmente il codice, in particolare per i complessi modelli a oggetti. Con il supporto di annullamento/ripetizione quasi gratis. Fornisce anche alcuni significativi performance benefits, in particolare su iPhone. Anche se sembra controintuitivo, dato il sovraccarico che penseresti abbia il framework, nella maggior parte dei casi puoi battere le prestazioni di SQLite calibrato a mano usando Core Data. Sull'iPhone, fa un ottimo lavoro di raccolta dei dati fetali per minimizzare l'utilizzo della memoria.

L'unico lato negativo, come sottolineato, è che questo ti limita richiedendo iPhone OS 3.0 per i tuoi utenti finali. Tuttavia, questo non è stato un problema per i miei utenti, e diventerà meno di uno in futuro.

+0

Strano che questi non popup nella mia ricerca. Forse la mia ricerca di "coredata" ha fatto la differenza. Questo post dovrebbe essere cancellato? – Hauke

2

Se si desidera eseguire l'applicazione su iPhone che non utilizzano il sistema operativo 3.0, sarà necessario utilizzare SQLite.

Tuttavia, l'utilizzo di CoreData (che utilizza SQLite come back-end, credo) significa che non è necessario scrivere il proprio codice di interazione del database, il che è piuttosto complicato da fare, soprattutto quando si fanno relazioni ecc.

io uso CoreData me stesso ...

11

questo potrebbe essere un vantaggio minore, ma SQLite è molto più portabile tra le piattaforme, dal momento core Data fa parte di cacao, e SQLite è pura C. Ciò significa che se si volevo portare la tua applicazione sul PC, ad esempio, avresti meno codice da riscrivere nell'eventualità che tu usi puro SQLite.

Quindi, se si desidera sviluppare qualcos'altro cross-platform utilizzando un DB locale (non necessariamente correlato a qualsiasi app per iPhone), si avrebbe già esperienza con SQLite.

+2

Questo è quello che mi piace ... Ho un'app per iPhone che sto passando ad Android, e le strutture dati sono una cosa di cui non devo preoccuparmi nel mio apprendimento. – AndyD273