RestKit - 实体映射属性转换
Posted
技术标签:
【中文标题】RestKit - 实体映射属性转换【英文标题】:RestKit - Entity Mapping Property transformation 【发布时间】:2013-05-27 09:53:07 【问题描述】:我需要将对象属性全部大写的 Web 服务映射到 coredata 对象属性全部小写:
# JSON
'ID': 'value',
'TITLE': 'value',
'BODY': 'value',
# CoreData Entity
'id': 'value',
'title': 'value',
'body': 'value',
我通过以下方式映射了字段:
RKEntityMapping *entMap = [RKEntityMapping mappingForEntityForName:entName
inManagedObjectStore:managedObjectStore];
NSEntityDescription *entity = [[managedObjectModel entitiesByName]
objectForKey:entName];
[entMap addAttributeMappingsFromArray:[[[RKPropertyInspector sharedInspector]
propertyInspectionForEntity:entity] allKeys]];
我在RKObjectMapping
中看到了这个方便的setDefaultSourceToDestinationKeyTransformationBlock
函数,允许在对象属性上定义自定义转换。这不适用于RKEntityMapping
。
如何在不手动定义字段的情况下使用RKEntityMapping
进行属性转换?
【问题讨论】:
【参考方案1】:这是我目前的解决方法:
- (NSDictionary *)dictToArray:(NSArray *)array
withTranformation:(NSString *(^)(NSString *))theBlock
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
for (NSString *key in array)
dict[theBlock(key)] = key;
return dict;
NSArray *fields = [[[RKPropertyInspector sharedInspector]
propertyInspectionForEntity:entity] allKeys];
NSDictionary *mapDict = [self dictToArray:fields
withTranformation:^NSString *(NSString *str)
return [str uppercaseString];
];
[entMap addAttributeMappingsFromDictionary:mapDict];
【讨论】:
以上是关于RestKit - 实体映射属性转换的主要内容,如果未能解决你的问题,请参考以下文章