我有两个版本的模型 Model001.xcdatamodel
和 Model002.xcdatamodel
。这两个位于 Model.xcdatamodeld
包中。
我还有一个 Model001to002.xcmappingmodel
,它不是 Model.xcdatamodeld
的一部分。我检查过:xcmappingmodel 和 xcdatamodeld 都被复制到 .app 包中。
我的托管对象上下文是这样初始化的:
NSURL *documentModel = [bundle URLForResource:@"Model" withExtension:@"momd"]; managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:documentModel]; return managedObjectModel;
我还在我的 UIManagedObject
子类中的重写 initWithFileURL:
上设置了这些属性。
NSMutableDictionary *options = [NSMutableDictionary dictionaryWithDictionary:self.persistentStoreOptions]; [options setObject:@YES forKey:NSMigratePersistentStoresAutomaticallyOption]; [options setObject:@YES forKey:NSInferMappingModelAutomaticallyOption]; self.persistentStoreOptions = [options copy];
但是当我尝试打开文档时,出现以下错误:
找不到用于迁移的映射模型
-- 更新--
即使我进行手动迁移
[NSMappingModel mappingModelFromBundles:@[[NSBundle mainBundle]] forSourceModel:sourceObjectModel destinationModel:self.managedObjectModel];
这返回零。尽管我仔细检查了 Model001to002.cdm 是否在应用程序包中。它必须在应用程序包中,对吗?
最佳答案
映射模型的一个“陷阱”是,您不能在创建映射后对模型进行任何更改。如果这样做,您也会收到此错误。
关于objective-c - 找不到用于迁移的映射模型 - UIManagedDocument 核心数据迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12782570/