RestKit 和键值编码......如何解决重复元素?

Posted

技术标签:

【中文标题】RestKit 和键值编码......如何解决重复元素?【英文标题】:RestKit and key-value coding ... how to address repeating elements? 【发布时间】:2012-01-30 15:51:23 【问题描述】:

我的文档有时看起来像这样:

<doc>
  <titleInfo>
    <title>One version of the title</title>
  </titleInfo>
  <titleInfo>
    <title>Another version</title>
  </titleInfo>
</doc>

但其他时候看起来像这样:

<doc>
  <titleInfo>
    <title>This is the only version of the title</title>
  </titleInfo>
</doc>

我正在尝试使用以下内容将其映射到我的对象中的数组:

[mapping mapKeyPath:@"titleInfo.title" toAttribute:@"titles"];

这在第一种情况下有效,但在第二种情况下我收到了

RKObjectMappingOperation.m:199 Failed transformation of value at keyPath 'titleInfo.title'. No strategy for transforming from '__NSCFString' to 'NSArray'

显然,RestKit 将第一个文档正确解释为包含字符串数组——但对于第二个文档,我找不到强制执行相同解释的方法。

有没有一种简单的方法可以使用 RestKit 中的 KVC 工具来表达这一点,还是我最好编写一些完全自定义的映射器?

【问题讨论】:

你使用哪个版本的restkit?来自网站或 git master 的 0.9.3 快照? 我按照自述文件中的 tl;dr 说明进行操作 -- git://github.com/RestKit/RestKit.git 我遇到了同样的问题并创建了an issue on github 【参考方案1】:

按照 Blake Walters 的说法:master 和 0.9.3 中的 LibXML 解析器有很多问题,最近在 RestKit 的开发分支中被基于 NSXMLParser 的解决方案取代,这解决了一些问题。

更好的方法是将重复的元素包装到一个数组中以供访问。

【讨论】:

我认为这意味着更改 XML,这是不可能的。

以上是关于RestKit 和键值编码......如何解决重复元素?的主要内容,如果未能解决你的问题,请参考以下文章

RestKit - 不符合键值编码

Restkit - 实体(空)不符合键“行”的键值编码

RestKit 0.20.1 映射本地 JSON “此类不符合键值编码...”

RestKit - 不符合键值编码,在 JSON 中没有根

使用 Restkit 0.20 映射此类与键的键值编码不兼容

对于使用 RestKit v0.20.0 的键 Text,此类不符合键值编码