2012-08-07 44 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