私は自分の 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 オブジェクトは 1 つの配列に読み込まれ、属性の 1 つは「動的」属性です。RestKit でマッピングを実行した後、2 つのレコードを保持できるようにしたいと考えています。
name: "restkit", key: "downloads", value: 2
name: "restkit", key: "rating", value: 10.0
質問: 上記の例に示すように、最初に JSON を 2 つの NSObject にマップする方法を教えてください。
これは、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 はこのような動作をサポートしていますが、ネストされた辞書に対してのみです。