基于文档的应用程序的核心数据版本

时间:2013-08-18 15:11:43

标签: objective-c cocoa core-data structure versioning

我的应用程序使用核心数据。现在,随着新版本的发布,我需要更改数据库结构。 我知道这是通过版本控制完成的,但我发现,所有教程都不适用于基于文档的应用程序,并且在某些时候我会陷入困境。如何在基于文档的应用程序上实现版本控制,其中文档是数据库本身并且可以具有任何名称?

由于

---其他信息----

我需要做的是:打开应用程序,点击“打开”按钮,从文件系统中选择NSManagedDocument。这是我的数据库(可以有任何名称),如果在打开时它检测到它是旧的结构,它应该将其结构更新为当前的结构。 (已添加一栏)

1 个答案:

答案 0 :(得分:2)

在我看来,将SQLite存储包装到NSManagedDocument这一事实与模型版本控制过程无关。

继续在代码中添加持久性存储选项,在Xcode中添加新的模型版本。

在设置核心数据堆栈时 - 即在选择了带有DB的文档之后 - 在创建持久性存储协调器时,必须将这些选项添加到持久性存储中:

NSString * const NSMigratePersistentStoresAutomaticallyOption;
NSString * const NSInferMappingModelAutomaticallyOption;

正如这些选项的名称所暗示的那样,它应该从这里自动运行。实际调用看起来像这样:

[persistentStoreCoordinator 
   addPersistentStoreWithType:NSSQLiteStoreType
   configuration:@"Default"
   URL:fileURL 
   options:@{NSMigratePersistentStoresAutomaticallyOption : @(YES),
             NSInferMappingModelAutomaticallyOption       : @(YES)}
   error:&error];
相关问题