Objective c 什么';5种魔法记录设置方法的区别是什么?

Objective c 什么';5种魔法记录设置方法的区别是什么?,objective-c,ios,database,core-data,magicalrecord,Objective C,Ios,Database,Core Data,Magicalrecord,有人能描述一下5种设置方法中的每一种吗 (void) setupCoreDataStack; (void) setupAutoMigratingDefaultCoreDataStack; (void) setupCoreDataStackWithInMemoryStore; (void) setupCoreDataStackWithStoreNamed:(NSString *)storeName; (void) setupCoreDataStackWithAutoMigratingSqliteS

有人能描述一下5种设置方法中的每一种吗

(void) setupCoreDataStack;
(void) setupAutoMigratingDefaultCoreDataStack;
(void) setupCoreDataStackWithInMemoryStore;
(void) setupCoreDataStackWithStoreNamed:(NSString *)storeName;
(void) setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName;
它们各自做什么,各自的用例是什么

setupCoreDataStack
当您刚开始使用MagicalRecord时,请使用此选项。正如方法所述,这将设置默认的核心数据堆栈。堆栈的各个部分是众所周知的,包括:NSPersistentStore、NSPersistentStoreCoordinate、NSManagedObjectModel和默认的NSManagedObjectContext。为了使核心数据正常工作,必须至少实例化和正确配置其中的一个。MagicalRecord提供了这个单一的方法来使用位于/Library/Application Support//.SQLite中的SQLite持久存储配置堆栈

setupAutoMigratingDefaultCoreDataStack
在对模型进行版本设置时,需要迁移数据。此方法将执行与前面(上面)方法相同的操作,但也将启用自动迁移

setupCoreDataStackWithInMemoryStore;
有时候,比如在编写单元测试时,您希望在应用程序终止时数据消失。此方法还将设置CoreData堆栈(如上所述),但它在系统内存(RAM)中创建持久存储,而不是SQLite存储

有时,您需要自定义数据所在的文件名。此方法与第一种方法相同,即设置核心数据堆栈,并在特定位置放置一个SQLite存储,但该存储名为storeName.SQLite,而不是.SQLite

setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName
这与上述方法相同,但也启用了自动迁移。当您对模型进行版本设置并进行简单的迁移时,您将需要执行此操作


有关核心数据迁移的更多信息,请参见

如何将xcdatamodeld文件与MagicalRecord关联?MagicalRecord是否会尊重xcdatamodeld属性,例如“存储在外部记录文件中”?默认情况下,MagicalRecord将使用带有nil参数的mergedModelsFromBundle:方法。这也在Xcode提供的(可怕的)样板代码中。这会自动为您计算出来。在需要的时候,还有其他的助手来指定模型文件(单元测试是另一个需要的常见地方),我仍然有点困惑。。。mergedModelsFromBundle是否会自动扫描项目结构中的xcdatamodeld文件?如果有多个xcdatamodeld,会发生什么情况?您在这些xcdatamodeld文件中声明的实体(及其属性)是否需要与您为MagicalRecord子类化的NSManagedObjects相匹配?此外,xcdatamodeld是否需要与MagicalRecord相匹配?我可以仅从NSManagedObject子类本身设置“存储在外部记录文件中”属性吗?描述很少,但NSManagedObjectModel的文档确切地告诉您发生了什么,即它知道如何找到捆绑包中的所有模型并将它们合并到单个模型中
setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName