2009-08-27 10 views

risposta

34

Elaborare ciò che Jergason ha scritto. Core Data è un ORM (Object-Relational Mapping) simile a Hibernate nel mondo Java. Estrae la meccanica attuale di memorizzazione dei dati (come i file SQL o .plist) dal codice. Il tuo codice ha solo bisogno di gestire un framework coerente orientato agli oggetti per recuperare oggetti, aggiornarli e persisterli. I dati principali supportano alcune transazioni ACID, ma non le commit in 2 fasi. Su iPhone, le impostazioni predefinite per Core Data avvolgono i database sqlite con il livello ORM.

Uno degli interessanti vantaggi secondari dell'utilizzo di Core Data è lo strumento per progettare visivamente il modello dati e generare le classi modello. Se si dispone di un modello di grandi dimensioni, questo può risparmiare un sacco di tempo nelle classi di modelli di codifica.

Un altro vantaggio interessante di Core Data è la possibilità di migrare il database da una versione del modello a un'altra. Questo è molto importante nel mondo dell'iPhone poiché potresti voler modificare il tuo modello di dati da una versione della tua app alla successiva. Core Data fornisce un modo abbastanza semplice per migrare i dati persistenti dal vecchio modello al nuovo senza dover scrivere un sacco di codice di migrazione. Basta definire una mappa di migrazione e aggiungere "poche" righe di codice al delegato dell'app e le cose vengono convertite automaticamente.

I dati principali su iPhone sono progettati per l'ambiente mobile. Se recuperi tutte le righe di una tabella in un array, in realtà non carica tutto in memoria. Crea ciò che Apple chiama un array in errore che è solo un oggetto che assomiglia ad un NSArray. Quando si accede ai vari elementi dell'array, i dati di base recuperano quelle entità (righe) in uso, non in query. Salva la memoria e aiuta la tua app a correre più velocemente.

Tutto sommato si tratta di uno strato ORM piuttosto completo, non ricco come Hibernate, ma sufficiente per questo ambiente.

16

Core Data è essenzialmente un modo per costruire visivamente il tuo modello, una sorta di Interface Builder per il modello. Crei entità che rappresentano classi di modelli e definisci relazioni tra loro. Invece di dover codificare una classe Person che ha un'istanza di una classe di indirizzi, puoi semplicemente crearli visivamente trascinandoli e rilasciandoli. C'è molto di più, ma questa è una caratteristica principale che ritengo sia interessante.

Vedere anche this Documentazione Apple.

Problemi correlati