18

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

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

他们每个人都做什么,每个人的用例是什么?

4

1 回答 1

27
setupCoreDataStack

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

setupAutoMigratingDefaultCoreDataStack

当您对模型进行版本化时,您将需要迁移数据。此方法将与之前的(以上)方法执行相同的操作,但也会启用自动迁移。

setupCoreDataStackWithInMemoryStore;

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

setupCoreDataStackWithStoreNamed:(NSString *)storeName

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

setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName

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

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

于 2012-11-15T03:41:36.730 回答