Reskit为同一字段解析多种类型的数据

时间:2014-08-21 16:20:11

标签: ios parsing restkit

我只想询问是否有办法解析以下字段" mods"在Reskit:

post_count: false,
sitename: "Mercury",
mods: false,
admin_email: "maystro@test.com",

这里mods有一个布尔值,在下一个例子中它有一个对象作为值:

post_count: false,
sitename: "Mercury",
mods: {
0: false,
author_blocks: {
enabled: {
placebo: "placebo"
},
disabled: {
2: "jbckmn",
placebo: "placebo"
}
},
backups: null,
smof_init: "Wed, 14 May 2014 18:53:58 +0000",
custom_logo: "",
custom_logo_height: "1",
custom_login_logo: "",
custom_login_logo_height: "1",
custom_favicon: ""
}

在相同的JSON响应中,我们接收到这种类型的数据,有时mods有一个布尔值,有时它有一个对象。有没有人知道是否有办法使用Restkit来处理这种情况进行动态映射?

提前致谢

1 个答案:

答案 0 :(得分:1)

确实是的。您想使用RKDynamicMapping,并从中返回您要使用的实际映射;类似的东西:

RKDynamicMapping *dynamicMapping = [RKDynamicMapping new];

[dynamicMapping setObjectMappingForRepresentationBlock:^RKObjectMapping *(id representation) {
    if ([representation valueForKey:@"MyKey"] isKindOfClass:[NSNumber class]])
    {
        return aMappingWhenTheFieldIsANumber;
    }
    else
    {
        return aMappingWhenTheFieldIsNotANumber;
    }
}];

通过这种方式,您可以选择在手头拥有数据时使用的映射。只需检查字段类型的数据,然后返回适合字段类型的正常RKObjectMapping