Core Data es un gráfico de objetos y un marco de persistencia proporcionado por Apple en los sistemas operativos macOS e iOS . Se introdujo en Mac OS X 10.4 Tiger e iOS con iPhone SDK 3.0. [1] Permite que los datos organizados por el modelo relacional de entidad-atributo se serialicen en almacenes XML , binarios o SQLite . Los datos se pueden manipular utilizando objetos de nivel superior que representan entidades y sus relaciones. Core Data gestiona la versión serializada, proporcionandogestión del ciclo de vida del objeto y del gráfico del objeto , incluida la persistencia . Core Data interactúa directamente con SQLite , aislando al desarrollador del SQL subyacente . [2]
Desarrollador (es) | Apple Inc. |
---|---|
Lanzamiento estable | 3.2.0 |
Sistema operativo | macOS , iOS , tvOS , watchOS |
Tipo | Utilidad del sistema |
Licencia | Propiedad |
Sitio web | Guía de programación de datos básicos para desarrolladores de Apple |
Así como Cocoa Bindings maneja muchas de las tareas del controlador en un diseño de modelo-vista-controlador , Core Data maneja muchas de las tareas del modelo de datos. Entre otras tareas, se ocupa de la gestión de cambios, la serialización en disco, la minimización de la huella de memoria y las consultas a los datos.
Uso
Core Data describe datos con un modelo de datos de alto nivel expresado en términos de entidades y sus relaciones, además de solicitudes de recuperación que recuperan entidades que cumplen criterios específicos. El código puede recuperar y manipular estos datos a nivel puramente de objeto sin tener que preocuparse por los detalles de almacenamiento y recuperación. Los objetos de controlador disponibles en Interface Builder pueden recuperar y manipular estas entidades directamente. Cuando se combina con enlaces Cocoa, la interfaz de usuario puede mostrar muchos componentes del modelo de datos sin necesidad de código de fondo.
Por ejemplo: un desarrollador podría estar escribiendo un programa para manejar vCards . Para administrarlos, el autor tiene la intención de leer las vCards en objetos y luego almacenarlas en un solo archivo XML más grande. Al usar Core Data, el desarrollador arrastraría su esquema desde el diseñador de datos en Xcode a una ventana del generador de interfaz para crear una GUI para su esquema. Luego, podrían escribir código Objective-C o Swift estándar para leer archivos vCard y colocar los datos en entidades administradas de Core Data. A partir de ese momento, el código del autor manipula estos objetos Core Data, en lugar de las vCards subyacentes. Conectar el Save
elemento del menú al método apropiado en el objeto del controlador hará que el controlador examine la pila de objetos, determine qué objetos están sucios y luego volverá a escribir un archivo de documento de datos básicos con estos cambios.
Los datos básicos están organizados en una gran jerarquía de clases, aunque la interacción solo prevalece con un pequeño conjunto de ellas.
Nombre | Usar | Métodos clave |
---|---|---|
NSManagedObject |
|
|
NSManagedObjectContext |
|
|
NSManagedObjectModel |
|
|
NSFetchRequest |
|
|
NSPersistentStoreCoordinator |
|
|
NSPredicate |
|
|
Formatos de almacenamiento
Core Data puede serializar objetos en XML, binario o SQLite para su almacenamiento. [2] Con el lanzamiento de Mac OS X 10.5 Leopard , los desarrolladores también pueden crear sus propios tipos de tiendas atómicas personalizadas . Cada método tiene ventajas y desventajas, como ser legible por humanos (XML) o más eficiente en memoria (SQLite).
Esta parte de Core Data es similar al sistema Enterprise Objects Framework (EOF) original, en el sentido de que se pueden escribir consultas bastante sofisticadas. A diferencia de EOF, no es posible escribir su propio SQL, ya que el almacén subyacente puede no estar basado en SQL. Recientemente, Core Data store para ODBC se ha puesto a disposición en el marco ODBC . [6]
Los esquemas de Core Data están estandarizados. Si tiene el archivo Xcode Data Model, puede leer y escribir archivos en ese formato libremente. Sin embargo, a diferencia de EOF, Core Data no está diseñado actualmente para acceso multiusuario o simultáneo a menos que utilice el marco ODBC. [6]
La migración de esquemas tampoco es trivial y casi siempre requiere código. Si otros desarrolladores tienen acceso y dependen de su modelo de datos, es posible que deba proporcionar el código de traducción de la versión además de un nuevo modelo de datos si su esquema cambia.
Historia y génesis
Core Data debe gran parte de su diseño a un producto anterior de NeXT , Enterprise Objects Framework (EOF). [7]
EOF era un mapeo relacional de objetos para motores de bases de datos SQL de alta gama como Microsoft SQL Server y Oracle . El propósito de EOF era doble: primero, conectarse al motor de la base de datos y ocultar los detalles de implementación; en segundo lugar, leer los datos del formato relacional y traducirlos en un conjunto de objetos. Los desarrolladores normalmente interactuaban solo con los objetos, lo que simplificaba el desarrollo de programas complejos, a costa de algunas configuraciones para mapear los datos a los objetos. El modelo de objetos EOF fue diseñado deliberadamente para hacer que los programas resultantes funcionen como un documento; el usuario puede editar los datos localmente en la memoria y luego escribir todos los cambios con un solo comando Guardar.
A lo largo de su historia, EOF contenía una serie de bits de código útil que de otro modo no estaban disponibles en NeXTSTEP / OpenStep . Por ejemplo, EOF requería la capacidad de rastrear qué objetos estaban sucios para que el sistema pudiera escribirlos más tarde. Esto se presentó al desarrollador no solo como un sistema similar a un documento, sino también en forma de una pila de comandos Deshacer ilimitada, con cada comando aplicado a los datos representados como una acción que se puede deshacer. Muchos desarrolladores se quejaron de que el código de gestión del estado era demasiado útil para ser aislado en EOF, y más tarde se trasladó a la API de cacao durante la transición a Mac OS X .
Inicialmente, lo que no se tradujo fue el propio EOF. EOF se usó principalmente junto con otro producto de la era OpenStep, WebObjects , que era un servidor de aplicaciones originalmente basado en Objective-C . En ese momento, Apple estaba en el proceso de migrar WebObjects al lenguaje de programación Java y, como parte de esta conversión, EOF se volvió mucho más difícil de usar desde Cocoa. Una vez más, hubo muchas quejas entre los desarrolladores de terceros.
Una comprensión crítica es que el sistema de administración de estado de objetos en EOF realmente no tenía nada que ver con las bases de datos relacionales. Los desarrolladores podrían utilizar el mismo código para gestionar gráficos de otros objetos, y lo han utilizado. En este rol, las partes realmente útiles de EOF fueron aquellas que construyeron automáticamente los conjuntos de objetos a partir de los datos sin procesar y luego los rastrearon. Este es el concepto que forma la base de Core Data.
Notas
- ^ Apple, "Tutorial de datos básicos para iPhone OS".
- ^ a b c Apple, "Guía de programación de datos básicos".
- ^ Zarra, Datos básicos .
- ^ Stevenson, "Descripción general de la clase de datos básicos"
- ^ Jurewitz, "Trabajar con datos básicos"
- ^ a b Github, "Marco Odbc"
- ^ Apple, "Guía del usuario de EOModeler"
Referencias
- Apple Inc. (17 de septiembre de 2009). "Guía de programación de datos básicos". Obtenido de https://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html
- Apple Inc. (9 de septiembre de 2009). "Tutorial de datos básicos para iPhone OS". Obtenido de https://developer.apple.com/iphone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html
- Apple Inc. (2006). "Guía del usuario de EOModeler". Obtenido de https://developer.apple.com/legacy/mac/library/documentation/WebObjects/UsingEOModeler/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001018-CH201-TP1
- Jurewitz, M. y Apple Inc. (2010). "Vídeos de desarrollo de iPhone: trabajar con datos básicos". Obtenido de https://developer.apple.com/videos/iphone/#video-advanced-coredata
- Stevenson, S. (2005). "Descripción general de la clase de datos básicos". Obtenido de http://cocoadevcentral.com/articles/000086.php
- Zarra, MS (2009). API del núcleo de datos de Apple por persistir datos en Mac OS X . Los programadores pragmáticos.
- LaMarche, J. y Mark, D. (2009). Más desarrollo de iPhone 3: abordar el SDK 3 de iPhone . Presione.
enlaces externos
- Apple Inc. (2018). "Datos básicos". Obtenido de https://developer.apple.com/documentation/coredata
- Apple Inc. (2009). "Tutorial de objetos web". Obtenido de https://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/Conceptual/WOTutorial/Introduction/Introduction.html
- CocoaDev. (Dakota del Norte). Obtenido de https://web.archive.org/web/20080801025517/http://www.cocoadev.com/
- Github. "Marco Odbc". https://github.com/mhakman/osx-cocoa-odbc
- mFluent LLC. "Ver archivos de persistencia de datos principales". https://github.com/yepher/CoreDataUtility
- Stevenson, S. (2005). "Cree una aplicación de datos básicos". Obtenido de http://cocoadevcentral.com/articles/000085.php