核心数据无法推断映射模型?!
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就会没有任何拦截,但是使用新的配置是不可能的。