如何使用MagicalRecord设置Core Data轻量级迁移?

时间:2013-05-30 16:17:25

标签: ios core-data magicalrecord

我试图使用MagicalRecord设置Core Data的轻量级迁移。我使用Google和SO查看了有关此主题的所有帖子。我理解 persistentStoreCoordinator 是如何工作的以及我想要做的设置也是如此。

这是我的代码:

AppDeligate.h

NSPersistentStoreCoordinator *persistentStoreCoordinator;

AppDelegate.m

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

if (persistentStoreCoordinator != nil) {
    return persistentStoreCoordinator;
}

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"saori.sqlite"]];

// handle db upgrade
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {

    // Handle error
}

return persistentStoreCoordinator;

}

我收到以下错误,据我所知;我不知道的是这些对象在哪里(我在我的应用程序中查找,没有找到任何内容):

  

'AppDelegate'没有可见的@interface声明选择器'applicationDocumentsDirectory'和

     

'AppDelegate'没有可见的@interface声明选择器'managedObjectModel'

我已经创建了商店:

xcdatamodeld

大多数,如果不是我所看到的所有代码都相似;我不知道MagicalRecord是否会为我处理这个问题,因为我找不到任何可以指示如何使用MR执行此操作的文档。我的问题是:我需要做些什么来完成这项工作?

3 个答案:

答案 0 :(得分:12)

MagicalRecord的重点在于为您管理:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:####];

查看有关核心数据堆栈设置的文档here

答案 1 :(得分:8)

确保检查所有这些内容:

在AppDelegate.m文件中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    [MagicalRecord setupAutoMigratingCoreDataStack];
    ...
}

如果您尚未对您的模型进行版本化修改:

  • 选择您的数据模型

Select your data model

  • 编辑 - >添加模型版本

    enter image description here

  • 将新版本命名为Finish

enter image description here

  • 现在应该有两个版本。选择文件如图所示。

enter image description here

  • 将模型版本更改为新版本

enter image description here

  • 现在应该检查新版本

enter image description here

答案 2 :(得分:6)

根据我对这个问题的理解,我建议你使用这个

[MagicalRecord setupAutoMigratingCoreDataStack]

如果您尚未更改模型版本,请将其更改为从旧模型创建的新模型