5种魔法记录设置方法有什么区别?

zak*_*ces 18 database core-data objective-c ios magicalrecord

任何人都可以给出5种设置方法的描述吗?

(void) setupCoreDataStack;
(void) setupAutoMigratingDefaultCoreDataStack;
(void) setupCoreDataStackWithInMemoryStore;
(void) setupCoreDataStackWithStoreNamed:(NSString *)storeName;
(void) setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName;
Run Code Online (Sandbox Code Playgroud)

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

cas*_*ora 27

setupCoreDataStack
Run Code Online (Sandbox Code Playgroud)

刚刚开始使用MagicalRecord时使用它.正如方法所述,这将设置您的默认核心数据堆栈.堆栈的各个部分是众所周知的,包括:NSPersistentStore,NSPersistentStoreCoordinate,NSManagedObjectModel和默认的NSManagedObjectContext.必须对这些中的每一个进行实例化和配置,以使Core Data能够正常工作.MagicalRecord提供了这个单一的方法来配置您的堆栈与位于/ Library/Application Support中的SQLite持久性存储// sqlite

setupAutoMigratingDefaultCoreDataStack
Run Code Online (Sandbox Code Playgroud)

在对模型进行版本控制时,您需要迁移数据.此方法将与上一个(上面)方法相同,但也将启用自动迁移.

setupCoreDataStackWithInMemoryStore;
Run Code Online (Sandbox Code Playgroud)

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

setupCoreDataStackWithStoreNamed:(NSString *)storeName
Run Code Online (Sandbox Code Playgroud)

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

setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName
Run Code Online (Sandbox Code Playgroud)

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

您可以在Apple的核心数据参考文档上阅读有关Core Data迁移的更多信息