核心数据版本控制/迁移失败,可可错误134190

时间:2012-06-30 12:43:05

标签: core-data

核心数据无法推断映射模型?!
NSMappingModel * mappingModel = [NSMappingModel inferredMappingModelForSourceModel:sourceModel destinationModel:destinationModel error:& error];

报告错误 Domain = NSCocoaErrorDomain Code = 134190“操作无法完成。(Cocoa错误134190.)”UserInfo = 0x6b9df80 {reason =源和目标属性类型不兼容,entity = Event,property = content}


Xcode 4.3.3(核心数据(sqlite))
此项目已设置为使用不同的配置测试版本,以便在一个数据库中使用NSURLIsExcludedFromBackupKey设置非用户生成的内容,另一个使用 用户生成存储在/ Documents文件夹中的东西。

我有一个版本化的核心数据模型,其中version1有一个配置(默认),因此在数据库文件和以下形式的2个实体。

配置
默认事件,子事件
事件
  内容 - NSString   event_id - NSInteger16   subEvents - to-Many Relationship target subEvent

子事件
  内容 - NSString   subEvent_id - NSInteger16   事件 - 一对一关系目标事件

版本2改变如下
配置
默认事件,子事件
备份 - 子事件
NoBackup事件
事件
  content - 可转换的CipherStringTransformer
  event_id - NSInteger16   subEvents - Fetched Property - event_id = $ FETCH_SOURCE.event_id

子事件   内容 - NSString
  subEvent_id - NSInteger16   event - Fetched Property - event_id = $ FETCH_SOURCE.event_id


如果我在source- / destionationMode中打印相应的属性,它们看起来像这样。

 po [[[[sourceModel entitiesByName] valueForKey:@"Event"] propertiesByName] valueForKey:@"content"]  
(id)(<NSAttributeDescription: 0x6b9ae30>),  
name content, isOptional 1, isTransient 0, entity Event, renamingIdentifier content, validation predicates (),  
warnings (),  
versionHashModifier (null)  
userInfo {},  
attributeType 700 , attributeValueClassName NSString, defaultValue (null)  

(lldb) po [[[[destinationModel entitiesByName] valueForKey:@"Event"] propertiesByName] valueForKey:@"content"]  
(id)(<NSAttributeDescription: 0x6e656b0>),  
name content, isOptional 1, isTransient 0, entity Event, renamingIdentifier content,  
validation predicates (),  
warnings (),  
versionHashModifier (null)  
userInfo {},  
attributeType 1800 , attributeValueClassName CipherTextTransformer, defaultValue (null)  

如果我只有从NSString切换到Transformable,那么LightWeightMigration就会没有任何拦截,但是使用新的配置是不可能的。

0 个答案:

没有答案