2012-11-15 43 views
18

任何人都可以给出每种5种设置方法的描述吗?5种魔法记录设置方法有什么区别?

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

它们各自做什么以及每个用例是什么?

回答

27
setupCoreDataStack 

当你刚刚开始使用MagicalRecord时使用它。正如该方法所述,这将设置您的默认核心数据堆栈。这些堆栈的部分知道,包括:NSPersistentStore,NSPersistentStoreCoordinate,NSManagedObjectModel和一个默认的NSManagedObjectContext。核心数据必须正确实例化和配置其中的每一个才能正常工作。 MagicalRecord提供这种单一的方法来与位于/库/ Application Support //一个SQLite持久性存储配置的筹码。sqlite的

setupAutoMigratingDefaultCoreDataStack 

当您版本的模型,您将需要迁移数据。此方法将执行与上一个(上述)方法相同的操作,但也会启用自动迁移。

setupCoreDataStackWithInMemoryStore; 

有时候,比如当你编写单元测试时,你希望数据在应用程序终止时消失。这个方法也会建立一个CoreData堆栈(如上所述),而不是SQLite存储,它会在系统内存(RAM)中创建一个持久存储。

setupCoreDataStackWithStoreNamed:(NSString *)storeName 

有时您想要自定义数据所在的文件名。此方法执行与第一,即建立的核心数据堆栈,并把一个SQLite商店中的具体位置,但是代替.sqlite,商店名为storeName.sqlite

setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName 

这确实的与上述方法相同,但也启用了自动迁移。您需要在版本化模型时执行此操作,并且需要启用简单的迁移。

您可以在Apple's Core Data Reference Documentation

+1

阅读核心数据迁移更你如何关联一个xcdatamodeld文件MagicalRecord? MagicalRecord会尊重xcdatamodeld属性,例如“保存在外部记录文件中”? – zakdances

+1

默认情况下,MagicalRecord将使用带有nil参数的mergedModelsFromBundle:方法。这也在Xcode提供的(可怕的)样板代码中。这会自动为您解决。还有额外的助手可以在需要时指定一个模型文件(单元测​​试是另一个常见的地方,这是必要的) – casademora

+0

我还是有点困惑... mergedModelsFromBundle会自动扫描xcdatamodeld文件的项目结构?如果您有多个xcdatamodeld,会发生什么情况?你在这些xcdatamodeld文件中声明的实体(及其属性)是否需要匹配你为MagicalRecord子类化的NSManagedObjects? – zakdances

相关问题