我在映射动态密钥时遇到“无法找到keyPath的对象映射:”的问题。
JSON响应是:
{
5471 = {
ImageCount = 0;
InventoryID = "3453dfdsfgt456t3";
MakeName = aaa;
ModelName = "a1";
StockNumber = 5471;
Year = 2012;
};
5516 = {
ImageCount = 0;
InventoryID = "fg456tgev65464b4v";
MakeName = bbb;
ModelName = b1;
StockNumber = 5516;
Year = 2002;
};
5567 = {
ImageCount = 0;
InventoryID = "fdg54646ghy67u65";
MakeName = ccc;
ModelName = c1;
StockNumber = 5567;
Year = 2008;
};
}
上面的keyPath值5567,5516,5471是随机值。怎么定义键? 我的课程代码如下:
类别:
@interface CategoryPic : NSObject
@property(nonatomic,strong)NSString *imageCount_pic;
@property(nonatomic,strong)NSString *inventoryID_pic;
@property(nonatomic,strong)NSString *makeName_pic;
@property(nonatomic,strong)NSString *modelName_pic;
@property(nonatomic,strong)NSString *stockNumber_pic;
@property(nonatomic,strong)NSString *year_pic;
@end
- (void)viewDidLoad{
RKObjectMapping* new = [RKObjectMapping mappingForClass:[CategoryPic class]];
[new mapKeyOfNestedDictionaryToAttribute:@"stockid"];
[new mapKeyPath:@"(stockid).ImageCount" toAttribute:@"imageCount_pic"];
[new mapKeyPath:@"(stockid).InventoryID" toAttribute:@"inventoryID_pic"];
[new mapKeyPath:@"(stockid).MakeName" toAttribute:@"makeName_pic"];
[new mapKeyPath:@"(stockid).ModelName" toAttribute:@"modelName_pic"];
[new mapKeyPath:@"(stockid).StockNumber" toAttribute:@"stockNumber_pic"];
[new mapKeyPath:@"(stockid).Year" toAttribute:@"year_pic"];
[[NewSingelton class].objectManager.mappingProvider setMapping:new forKeyPath:@"stockid"];
}
答案 0 :(得分:0)
我会将其转换为数组并使用随机数作为其中一个字段。
NSMutableArray *result = [NSMutableArray array];
NSMutableDictionary *entry = [NSMutableDictionary dictionary];
for (NSString *key in jsonObject.allKeys) {
entry = [NSMutableDictionary dictionaryWithDictionary:jsonObject[key]];
[entry addEntriesFromDictionary:@{@"randomNumber" : key}];
[result addObject:[NSDictionary dictionaryWithDictionary:entry];
}
或者,如果您的数据样本是任何指示,只需抛弃此密钥,因为它与StockNumber相同。
答案 1 :(得分:0)
stockid
应作为CategoryPic
上的属性存在,以便将值保存在某处。如果该数字始终与StockNumber
匹配,那么您可以使用stockNumber_pic
并删除该行映射。