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:将数组映射到对象

RestKit:将单个对象映射到现有数组

RestKit:将嵌套数组映射到对象

RestKit 2.0 - 将 json 数组映射到实体关系会丢失数组序列

使用 RestKit 将 JSON“关联数组”映射到 CoreData

Restkit 将多个 json 提要映射到同一个数组