3

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

错误报告 Domain=NSCocoaErrorDomain Code=134190 “无法完成操作。(Cocoa 错误 134190。)” UserInfo=0x6b9df80 {原因=源和目标属性类型不兼容,实体=事件,属性=内容}


Xcode 4.3.3 (core data (sqlite))
这个项目已经被设置来测试不同配置的版本控制,在一个设置了 NSURLIsExcludedFromBackupKey 的数据库和另一个存储在 /Documents 中的用户生成内容的数据库中包含非用户生成的内容文件夹。

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

配置
默认事件,SubEvent
事件
内容 - NSString event_id - NSInteger16 subEvents - to-Many 关系目标 subEvent

SubEvent
content - NSString subEvent_id - NSInteger16 event - to-One 关系目标事件

Version2 更改如下
配置
默认事件,SubEvent
Backup - SubEvent
NoBackup Event
事件
内容 - Transformable CipherStringTransformer
event_id - NSInteger16 subEvents - Fetched Property - event_id = $FETCH_SOURCE.event_id

子事件内容 - NSString subEvent_id
- NSInteger16 事件 - 获取的属性 - event_id = $FETCH_SOURCE.event_id


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

 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 没有任何拦截,但使用新配置是不可能的。

4

0 回答 0