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
阅读核心数据迁移更你如何关联一个xcdatamodeld文件MagicalRecord? MagicalRecord会尊重xcdatamodeld属性,例如“保存在外部记录文件中”? – zakdances
默认情况下,MagicalRecord将使用带有nil参数的mergedModelsFromBundle:方法。这也在Xcode提供的(可怕的)样板代码中。这会自动为您解决。还有额外的助手可以在需要时指定一个模型文件(单元测试是另一个常见的地方,这是必要的) – casademora
我还是有点困惑... mergedModelsFromBundle会自动扫描xcdatamodeld文件的项目结构?如果您有多个xcdatamodeld,会发生什么情况?你在这些xcdatamodeld文件中声明的实体(及其属性)是否需要匹配你为MagicalRecord子类化的NSManagedObjects? – zakdances