2011-06-16 79 views
18

Soy relativamente nuevo en iOS y programación, e hice una aplicación antes, pero usaba una lista para almacenamiento, que guardé en la carpeta de documentos. Ahora, estoy pensando en cambiar a Core Data, pero parece un poco complicado, y no estoy seguro si funcionará para lo que quiero. Voy a tener un montón de datos que necesito para graficar, así que no estoy seguro de si Core Data es mejor para esto, ya que parece que no puedo crear un tipo de matriz en el archivo .xcdatamodeld. ¿Cuáles son algunas otras ventajas de Core Data? ¿Es más rápido? Más fácil de usar (una vez que lo configuró)?¿Cuáles son algunas ventajas de usar Core Data? (a diferencia de plist)

Actualización: Para cualquier persona que se pregunte, terminé la aplicación, y valió la pena aprender a usar Core Data, y fue mucho menos complicado de lo que pensé originalmente. Hacerlo con los plists habría sido un infierno. La forma en que lo hacen parece un poco críptico al principio, pero si comienzas a usarlo, lo conseguirás. Las relaciones son realmente lo que es asombroso al respecto.

+0

Puede encontrar [esta respuesta sobre la diferencia entre Core Data y SQLite] (http://stackoverflow.com/questions/523482/core-data-vs-sqlite-3/524301#524301) para ser útil. –

Respuesta

24

Algunas ventajas de la parte superior de mi cabeza:

  • Mucho mejor gestión de memoria. Con un plist debes cargar todo en la memoria; con Core Data, solo se deben cargar los objetos que está utilizando actualmente. Además, una vez que se cargan los objetos, normalmente son objetos de "error" de marcador de posición cuyos datos de propiedad no se cargan hasta que lo necesite.
  • Relacionado con lo anterior, cuando tiene cambios, puede guardar solo los objetos modificados, no todo el conjunto de datos.
  • Puede leer/escribir los objetos de su modelo directamente en lugar de convertirlos a/desde algo como un NSDictionary.
  • Clasificación integrada de objetos cuando los extrae del almacén de datos.
  • Sistema rico de predicados para buscar su conjunto de datos para objetos de interés.
  • Las relaciones entre entidades se manejan directamente, como propiedades en los objetos relacionados. Con un plist necesitarás hacer algo como almacenar una ID de objeto para una relación, y luego buscar el objeto relacionado.
  • Validación automática opcional de valores de propiedades.

Los modelos de datos no usan matrices, pero las relaciones "a muchas" se modelan como conjuntos.

+0

+1. Ama la forma en que explicas las cosas para cada pregunta. #FanOfTom. – Bhavin

4

Es una cuestión de lo que está ahorrando. Para cadenas simples, matrices, diccionarios, está bien usar un plist. Para algo más complicado (datos, imágenes, información no objeto) o algo con muchas relaciones (relación de pensamiento entre canción y álbum, o foto con fotógrafo), entonces algo así como una solución más robusta podría funcionar mejor como SQLite.

CoreData es un contenedor basado en Object-c alrededor de SQLite. Si crees que podrías querer algo más complicado, CoreData podría ser el camino a seguir.

Si necesita un rápido tutorial, me Salida: http://www.raywenderlich.com/934/core-data-tutorial-getting-started

Esto me va y me permitió aprender los conceptos básicos del funcionamiento de CoreData.

¡Buena suerte!

+4

Si bien es cierto que Core Data usa SQLite (en el iPhone), se trata de un detalle de implementación y no debe pensar en Core Data como solo un contenedor.Es un marco de persistencia de objetos. Se encarga de guardar y restaurar desde el disco por usted. – kubi

Cuestiones relacionadas