2012-08-07 42 views
-2

我在我的iOS项目中使用了RestKit,并且发现了非平凡的问题并找不到解决方案。RestKit:动态属性的映射(不像示例中的NSDictionary)

我有一个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确实支持这种行为,但仅适用于嵌套字典。

+0

什么问题? – 2012-08-07 19:52:16

+0

对不起,添加确切的问题,我有。 – 2012-08-07 19:57:54

+0

任何共鸣为downvoting两个答案?他们是正确的,很好的答案... – 2012-10-16 05:27:06

回答

0

我没有使用键值验证由RestKit触发模式,正确的度量键和值设置为通用我想要的钥匙。

0

您可以使用键值编码来访问动态命名的属性。你做了一个NSDictionary后出了JSON的,这样做:

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

+0

任何线索如何插入RestKit的对象映射? – 2012-08-07 20:07:50

+0

@你究竟是什么意思? – 2012-08-07 20:10:55

+0

我添加了一个片段来展示我如何进行初始化。 – 2012-08-07 20:42:13