找不到用于迁移的映射模型 - UIManagedDocument核心数据迁移

V1r*_*ru8 6 cocoa-touch core-data objective-c ios xcode4.5

我有两个版本的模型Model001.xcdatamodelModel002.xcdatamodel.这两个都在Model.xcdatamodeld捆绑中.我也有一个Model001to002.xcmappingmodel不属于的一部分Model.xcdatamodeld.我检查过:xcmappingmodel和xcdatamodeld都被复制到.app包中.

我的托管对象上下文初始化如下:

    NSURL *documentModel = [bundle URLForResource:@"Model" 
                                     withExtension:@"momd"]; managedObjectModel = [[NSManagedObjectModel alloc]
    initWithContentsOfURL:documentModel]; return managedObjectModel;
Run Code Online (Sandbox Code Playgroud)

我还在initWithFileURL: 我的UIManagedObject子类中重写了这些属性.

    NSMutableDictionary *options = [NSMutableDictionary dictionaryWithDictionary:self.persistentStoreOptions];
    [options setObject:@YES forKey:NSMigratePersistentStoresAutomaticallyOption];
    [options setObject:@YES forKey:NSInferMappingModelAutomaticallyOption];
    self.persistentStoreOptions = [options copy];
Run Code Online (Sandbox Code Playgroud)

但是当我尝试打开文档时,我收到以下错误: Can't find mapping model for migration

- 更新 -

即使我进行手动迁移

     [NSMappingModel mappingModelFromBundles:@[[NSBundle mainBundle]]
                              forSourceModel:sourceObjectModel
                            destinationModel:self.managedObjectModel];
Run Code Online (Sandbox Code Playgroud)

这返回nil.虽然我仔细检查了Model001to002.cdm是否在应用程序包中.它必须在应用程序包中吗?

Alb*_*igo 21

使用映射模型的"问题"是,在创建映射后,不允许对模型进行任何更改.如果这样做,您也会收到此错误.

  • 我删除了映射模型文件并创建了一个新文件.然后错误消失了. (2认同)

V1r*_*ru8 6

好的,通过从 Xcode 中删除所有核心数据文件,读取它们并再次设置映射模型的源和目标来解决问题。

该死的Xcode!

  • 遇到同样的问题,您是移动引用还是实际从项目中删除文件? (2认同)