我只想询问是否有办法解析以下字段" 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来处理这种情况进行动态映射?
提前致谢
答案 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
。