0

我使用 HTTPservice 加载 XML 并在列表中显示结果 - 当找到超过 1 个 XML 记录时它可以工作....但是当只有一个返回的 XML 记录时,由于某种原因它会得到不同的处理并生成此错误:

Suspended: TypeError: Error #1034: Type Coercion failed: cannot convert mx.utils::ObjectProxy

我看到这样的帖子:

http://anupushkaran.blogspot.com/2010/02/typeerror-error-1034-type-coercion.html

但我不知道如何使其适应我的 HTTPService resultHandler 代码块......

我使用 FB 4.6,我的 XML 结构如下所示:

SiteXYZ
   Events
      EventListing

我要使用的所有数据都在 EventListing 节点下。

我已经测试了一些代码,可以检测什么时候返回的长度,所以我想我可以检测到长度何时为 1,然后以不同的方式处理——虽然不知道是什么。

我看到的另一件事让我很接近......当我查看网络监视器的 TreeView > Response > Response Body 时,我可以看到在成功的旅行中,身体像这样回来:

SiteXYZ
  Events
     EventListing
        [0]
        [1]....  and so on....

但是在返回 SINGLE 记录的情况下,响应的正文会像这样返回:

SiteXYZ
   Events
      EventListing

所以我不应该能够检测到它何时返回一个记录,然后相应地设置列表 dataProvider 吗?这样当它有很多返回的记录时,dataprovider 设置为:

list1.dataProvider = myXML.lastResult.SiteXYZ.Events.EventListing;

但是当它只有一个返回记录时,该 dataProvider 将如何设置?这没有用:

list1.dataProvider = lfXML.lastResult.LeisureFun.Events;

有人能帮忙吗?我的方法离基地很远吗?对于这个问题的漫无边际的性质感到抱歉,但是当我输入它时,我停了大约 5 次并尝试了一些在我思考时想到的东西......但仍然没有任何效果......我觉得我在做某事(虽然可能是错误的)但还不能解决它。

4

1 回答 1

0

答案在我引用的原始网站中......

我仔细查看了该帖子所说的问题是什么以及该代码片段如何解决它并能够通过将它放在我的 resultHandler 块中让它为我工作......

arr=new ArrayCollection();
if(event.result.SiteXYZ.Events.EventListing is ArrayCollection)
{
arr = ArrayCollection(event.result.SiteXYZ.Events.EventListing);
}
if(event.result.SiteXYZ.Events.EventListing is ObjectProxy)
{
arr =new ArrayCollection(ArrayUtil.toArray
    (event.result.SiteXYZ.Events.EventListing));
}

现在,当返回一条记录时,它显示正常......返回的多条记录相同。

不过感谢您的帮助...我一定会保存此代码段以供将来使用!

于 2013-03-14T21:41:06.840 回答