RestKit - 将数组的键路径映射到该数组内的对象

时间:2014-08-05 15:07:21

标签: objective-c restkit restkit-0.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将无法找到数据库中已有的对象并创建另一个而不是更新现有的那个。

有可能解决这个问题吗?

感谢大家的回答!

PS:在我挣扎的过程中,我找到了一些方法来做,比如为特定类型创建一个对象(对于插件,用于表单等),或者在完成映射后设置类型,但它接缝很重这个简单问题的解决方案。

1 个答案:

答案 0 :(得分:3)

我必须说你应该创建自己的JSON序列化类并注册它。您的类将正常反序列化,但然后检查并改变结果以分解类型信息。


忽略阵列问题的原始答案:

您需要使用addAttributeMappingFromKeyOfRepresentationToAttribute:,它允许您提取该密钥并将其用作值。