RestKit:动态属性的映射(不是示例中的NSDictionary)

时间:2012-08-07 19:49:13

标签: iphone ios restkit

我在我的iOS项目中使用RestKit,并且发现了非常重要的问题,无法找到它的解决方案。

我有一个json:

[{
    "name": "restkit", 
    "downloads": 2
},
{
    "name": "restkit", 
    "rating": 10.0
}]

和数据模型:Model.h

@interface Model : NSObject
    @property (nonatomic, strong) NSString * name;
    @property (nonatomic, strong) NSString * key;
    @property (nonatomic, strong) NSString * value;
@end

这些JSON对象在一个数组中加载,其中一个属性是“动态”属性。 在RestKit中执行映射后,我希望能够有2条记录:

name: "restkit", key: "downloads", value: 2
name: "restkit", key: "rating", value: 10.0

问题:如何将JSON在开头映射到2个NSObjects,如上例所示?

这是我使用RestKit和触发请求初始化映射的方法:

// during app initialization I setup mappings:

RKObjectMapping *modelMapping = [RKObjectMapping mappingForClass:[Model class]];
[metricDataMapping mapKeyPath:@"name" toAttribute:@"name"];

...... -- something should go here to support that dynamic stuff

[[RKObjectManager sharedManager].mappingProvider addObjectMapping:metricDataMapping];

// in the view controller when loading data
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:url usingBlock:^(RKObjectLoader *loader){
    loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass: [MetricData class]];

    loader.onDidLoadObjects = ^(NSArray * objects){
        self.dataArray = objects;
    };
}];

问题在于,“下载”和“评级”键是动态的,它可以是任何单词。我需要解析“即时”并在UI中显示。 Restkit确实支持这种行为,但仅适用于嵌套字典。

2 个答案:

答案 0 :(得分:0)

您可以使用键值编码访问动态命名的属性。在用JSON制作NSDictionary之后,请执行以下操作:

[self setValue:[dictionary objectForKey:@"downloads"] forKey:@"downloads"];

答案 1 :(得分:0)

我确实对RestKit触发的模型使用了键值验证,将正确的度量值和值设置为我想要的通用键。

相关问题