RestKit - 将数组的键路径映射到该数组内的对象
Posted
技术标签:
【中文标题】RestKit - 将数组的键路径映射到该数组内的对象【英文标题】:RestKit - Map keypath of an array to the object inside of that array 【发布时间】:2014-08-05 15:07:20 【问题描述】:我真的很想用 RestKit 0.20 解析这个特定的响应:
"addons": [
"id": 1,
"name": "Addon one",
"version": 2
,
"id": 2,
"name": "Addon two",
"version": 3
],
"forms": [
"id": 1,
"name": "Form one",
"version": 1
]
问题是我需要把响应翻译成同一个类的对象数组,比如
@interface MyCoreDataObject : NSManagedObject
@property (nonatomic, retain) NSString * uid;
@property (nonatomic, retain) NSNumber * version;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * type;
@end
鉴于此,对象数组的键应该映射到 type 属性,并且映射结果上方的响应结果应该看起来像一个对象数组(和数据库中的表):
uid name version type
1 Addon one 2 addons
2 Addon two 3 addons
1 Form one 1 forms
这点也很重要,ID和Type作为身份属性使用,所以映射完成后我不能设置类型值,因为在这种情况下RestKit将无法找到已经在DB中的对象并创建另一个,而不是更新现有的。
有没有可能解决这个问题?
谢谢大家的回答!
【问题讨论】:
【参考方案1】:我不得不说您应该创建自己的 JSON 序列化类并注册它。您的类将正常反序列化,然后检查并改变结果以分解类型信息。
忽略数组问题的原答案:
您需要使用addAttributeMappingFromKeyOfRepresentationToAttribute:
,它允许您提取该键并将其用作值。
【讨论】:
感谢您的回答。是的,我知道那个方法,如果你里面有一个键和一个对象,那真的很酷,但我里面有一个数组。你知道如何用里面的数组来解决它吗? Here is an example 啊,内部数组。是的,这是一个问题:-S 我想不出一种非常干净的方法来做到这一点,特别是如果类型是您的唯一标识符的一部分。 酷!那绝对应该有效。喜欢这个主意!所以看起来restkit无法解决通常映射配置的问题? 在这种情况下不是。索引到数组在某些情况下会出现问题,例如尝试在 1 个映射中索引到 2 个数组也无法完成...以上是关于RestKit - 将数组的键路径映射到该数组内的对象的主要内容,如果未能解决你的问题,请参考以下文章
RestKit 2.0 - 将 json 数组映射到实体关系会丢失数组序列