RestKit 对象映射 - 一个实体,两个映射

Posted

技术标签:

【中文标题】RestKit 对象映射 - 一个实体,两个映射【英文标题】:RestKit Object Mapping - One Entity, two mappings 【发布时间】:2012-03-26 21:22:48 【问题描述】:

在我的last question was solved 我从服务器接收到的 JSON 更改为以下内容后,我一直在处理映射以使用 Core Data 保存数据。

实体

 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"

现在我想映射“数据”中的所有数据加上实体“键”的键“直到”,但找不到正确的解决方案。到目前为止,我获取数据的映射看起来像这样并且运行良好,但当然错过了“直到”键。

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;

感谢您的想法!

【问题讨论】:

【参考方案1】:

您可能想要进行两个映射。第一个映射将包含整个对象,并与嵌套的“数据”路径有关系。

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 属性上的关键对象数组。不使用rootKeyPath,可以在0.9.4开发分支(即将发布)上使用基于resourcePath的映射注册。

【讨论】:

再次感谢您快速而精彩的回答。我会尽快下载 0.9.4 ;)

以上是关于RestKit 对象映射 - 一个实体,两个映射的主要内容,如果未能解决你的问题,请参考以下文章

iOS RestKit 实体管理器映射对象数组

Restkit嵌套对象映射问题

RestKit - 实体映射属性转换

使用 RestKIt 在核心数据实体中映射 json 对象

Restkit 对象映射给出空对象

特定实体的 RestKit 映射