¿Usa CoreData o SQLite en iPhone?

Como CoreData está disponible para el iPhone en OS 3.0, ¿está destinado a ser la respuesta a la persistencia de los datos y replace todas las necesidades de SQLite directo?

¿Qué razones existen para seguir usando SQLite ? ¿Cuáles son las ventajas / desventajas de SQLite vs. CoreData ?

Esta es una pregunta común aquí:

  • "Core Data vs. SQLite for SQL desarrolladores experimentados"
  • "Core Data vs Sqlite y performance …"
  • "Datos principales vs sqlite3"
  • "¿Vale la pena usar datos centrales para una simple aplicación sqlite en el iPhone con una tabla y sin relaciones o subtablas / vistas complicadas?"

En resumen, Core Data puede simplificar en gran medida su código, especialmente para los models de objects complejos. Puedes get deshacer / rehacer el soporte casi gratis con él. También ofrece algunos beneficios de performance muy importantes, especialmente en el iPhone. Aunque parezca contrario a la intuición, dada la cantidad de sobrecarga que uno pensaría que tiene el marco, en la mayoría de los casos puede vencer el performance de SQLite sintonizado manualmente usando Core Data. En el iPhone, hace un gran trabajo de búsqueda de lotes para minimizar el uso de la memory.

La única desventaja, como se ha señalado, es que esto lo limita exigiendo iPhone OS 3.0 para sus usuarios finales. Sin embargo, esto no ha sido un problema para mis usuarios, y solo se networkingucirá a uno en el futuro.

Esto podría ser un beneficio menor, pero SQLite es mucho más portátil entre plataforms, ya que Core Data es parte de Cocoa, y SQLite es C pura. Esto significa que si quisieras portar tu aplicación a PC, por ejemplo, tendrías less código para reescribir en caso de que utilice SQLite puro.

Entonces, si quisieras desarrollar cualquier otra plataforma multiplataforma utilizando un DB local (no necesariamente relacionado con ninguna aplicación de iPhone), ya tendrás experiencia con SQLite.

Si desea que su aplicación se ejecute en iPhones que no ejecuten OS 3.0, deberá usar SQLite.

Sin embargo, usar CoreData (que usa SQLite como back-end, creo) significa que no tiene que escribir su propio código de interacción de database, que es bastante complicado de hacer, especialmente cuando está haciendo relaciones, etc.

Yo uso CoreData yo mismo …