2012-11-15 11 views
18

Qualcuno può dare una descrizione di ciascuno dei 5 metodi di installazione?Qual è la differenza tra i 5 metodi di configurazione di Magical Record?

(void) setupCoreDataStack; 
(void) setupAutoMigratingDefaultCoreDataStack; 
(void) setupCoreDataStackWithInMemoryStore; 
(void) setupCoreDataStackWithStoreNamed:(NSString *)storeName; 
(void) setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName; 

Cosa fanno ciascuno e qual è il caso d'uso per ciascuno?

risposta

27
setupCoreDataStack 

Utilizzare questo quando si è appena iniziato con MagicalRecord. Ciò, come afferma il metodo, imposta lo stack dei dati principali predefinito. Le parti dello stack sono ben note e comprendono: NSPersistentStore, NSPersistentStoreCoordinate, NSManagedObjectModel e un predefinito NSManagedObjectContext. Almeno uno di ciascuno di questi deve essere istanziato e configurato correttamente affinché Core Data funzioni. MagicalRecord fornisce questo singolo metodo per configurare il tuo stack con un archivio permanente SQLite si trova in/Libreria/Application Support //. SQLite

setupAutoMigratingDefaultCoreDataStack 

Quando la versione del modello, sarà necessario eseguire la migrazione dei dati. Questo metodo farà lo stesso del metodo precedente (sopra), ma abiliterà anche le Migrazioni automatiche.

setupCoreDataStackWithInMemoryStore; 

A volte, ad esempio quando si scrivono i test di unità, si desidera che i dati scompaiano quando l'app termina. Questo metodo imposterà anche uno stack CoreData (come menzionato sopra) ma invece di un archivio SQLite, crea un archivio persistente nella memoria di sistema (RAM).

setupCoreDataStackWithStoreNamed:(NSString *)storeName 

A volte si desidera personalizzare il nome del file in cui risiedono i dati. Questo metodo fa lo stesso come il primo, vale a dire dello stack di dati fondamentali, e mettendo un negozio SQLite nella posizione specifica, ma invece di .sqlite, il negozio è denominato storeName.sqlite

setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName 

questo fa la come il metodo sopra, ma ha anche abilitato le migrazioni automatiche. Dovrai farlo quando esegui la versione del tuo modello e hai una semplice migrazione che deve semplicemente essere abilitata.

Si può leggere di più sulle migrazioni Core Data in Apple's Core Data Reference Documentation

+1

Come si associa un file xcdatamodeld a MagicalRecord? MagicalRecord rispetterà gli attributi di xcdatamodeld come "Store in External Record File"? – zakdances

+1

Per impostazione predefinita, MagicalRecord utilizzerà il metodo mergedModelsFromBundle: con un parametro nil. Questo è anche nel (orribile) codice di codice fornito da Xcode. Questo lo calcola automaticamente per te. Esistono altri helper per specificare un file di modello quando necessario (il test dell'unità è un altro posto comune dove è necessario) – casademora

+0

Sono ancora un po 'confuso ... mergedModelsFromBundle analizzerà automaticamente la struttura del progetto per i file xcdatamodeld? Cosa succede se hai più di un xcdatamodeld? Le entità (ei loro attributi) dichiarati in quei file xcdatamodeld devono corrispondere agli NSManagedObjects di cui sottoclassi MagicalRecord? – zakdances

Problemi correlati