RestKit对象映射 - 一个实体,两个映射
问题描述:
我的last question was solved后,我从服务器接收到的JSON更改为以下,我卡住处理映射以保存数据与核心数据。RestKit对象映射 - 一个实体,两个映射
实体
Key
- alias
- key
- keyType
- keyword
- unid
- until
JSON(从服务器)
{
"documents": 1026,
"configuration":
{
...
},
"data":
[
{
"alias": "",
"key": "SALUTATION",
"keyType": "S",
"keyword": "Mr",
"unid": ""
},
...
{
"alias": "Automobile",
"key": "ACCOUNT_MARKET_SEGMENT",
"keyType": "A",
"keyword": "Automobile",
"unid": ""
}
],
"documentsFound": 770,
"maxCount": -1,
"since": "20120326200001",
"until": "20120326211309"
}
现在我想地图从 “数据” 加密钥的所有数据 “直到” 为实体“Key”但找不到合适的解决方案。我的映射到目前为止获得的数据看起来像这样,运作良好,但错过了“直到” - 键,当然。
RKManagedObjectMapping* keyMapping = [RKManagedObjectMapping mappingForClass:[Key class]];
keyMapping.rootKeyPath = @"data";
[keyMapping mapKeyPath:@"key" toAttribute:@"key"];
[keyMapping mapKeyPath:@"keyword" toAttribute:@"keywordEN"];
[keyMapping mapKeyPath:@"alias" toAttribute:@"alias"];
keyMapping.setDefaultValueForMissingAttributes = YES;
感谢您的想法!
答
你可能会想要做两个映射。第一个映射将包含整个对象,并与嵌套的“数据”路径有关系。
RKObjectMapping *keyMapping = [RKObjectMapping mappingForClass:[Key class]];
[keyMapping mapAttributes:@"alias", @"key", nil];
[keyMapping mapKeyPath:@"keyword" toAttribute:@"keywordEN"];
RKObjectMapping *outerMapping = [RKObjectMapping mappingForClass:[Container class]];
[outerMapping mapKeyPath:@"data" toRelationship:@"keys" withMapping:keyMapping];
[outerMapping mapAttributes:@"since", @"until", "maxCount", "documentsFound", nil];
这会给你一个新的对象与你的元数据,然后你的容器的keys属性上的关键对象的数组。您可以使用0.9.4开发分支上的基于resourcePath的映射注册(即将发布),而不是使用rootKeyPath。
再次感谢您的快速和明智的答案。我将尽快下载0.9.4;) – flashfabrixx 2012-03-27 07:44:09