Core Data
# Core Data

In informatica con Core Data si fa riferimento ad API Cocoa sviluppate da Apple Inc. ed incluse nel sistema operativo Mac OS X Tiger.

## Descrizione

Lo scopo di Core Data è permettere lo sviluppo di applicazioni che trattano i dati secondo una organizzazione Model-View-Controller senza doversi occupare di tutti gli aspetti implementativi derivati da questa scelta progettuale.

Questi dati possono essere serializzati e salvati come XML, binario e SQLite. I dati vengono manipolati utilizzando degli oggetti ad alto livello che rappresentano le relazioni e gli attributi. Il framework gestisce la serializzazione, gestisce il ciclo di vita dei singoli oggetti garantendone la persistenza. Core Data si può interfacciare direttamente con SQLite slegando il programmatore dalla gestione a basso livello del database e dell'SQL.

Internamente si appoggia per la gestione degli oggetti al modello entità relazione. Core Data si occupa della gestione su disco, della gestione dei cambiamenti, della minimizzazione della memoria occupata e delle query su disco.

Il framework è molto utile per gestire strutture dati complesse, dove una buona organizzazione delle informazioni è essenziale.

Core Data offre un sistema radicalmente diverso di gestire i dati: invece di mantenere un puntatore ad ogni oggetto a cui si è interessati, si esegue una query al database per ottenere tutti gli oggetti di una determinata classe, e si opera su di essi.

Inoltre Core Data fornisce anche i metodi accessori per modificare le variabili d'istanza di un'entità attraverso il Key Value Coding, cioè basandosi sul nome della variabile.

### Core Data in Xcode

Xcode, l'IDE fornito dalla Apple, fornisce un'interfaccia per la creazione di applicazioni e strutture dati. Esse si possono organizzare in modo grafico, utilizzando un diagramma ed aggiungendo entità e relazioni. Inoltre, trascinando la struttura dati in Interface Builder, si ottiene una GUI funzionante in grado di effettuare ricerche e modifiche all'interno della struttura dati.

