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

时间:2012-11-15 03:28:12

标签: objective-c ios database core-data magicalrecord

任何人都可以对5种设置方法中的每一种进行描述吗?

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

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

1 个答案:

答案 0 :(得分:27)

setupCoreDataStack

当您刚开始使用MagicalRecord时使用此功能。正如方法所述,这将设置您的默认核心数据堆栈。堆栈的各个部分是众所周知的,包括:NSPersistentStore,NSPersistentStoreCoordinate,NSManagedObjectModel和默认的NSManagedObjectContext。必须对这些中的每一个进行实例化和配置,以使Core Data能够正常工作。 MagicalRecord提供了这种单一方法,可以使用位于/ Library / 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

上阅读有关Core Data迁移的更多信息