Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何处理listProvider数据仅作为一条记录返回的情况?_Actionscript 3_Apache Flex_Flash Builder_Flex4.6_Flash Builder4.5 - Fatal编程技术网

Actionscript 3 如何处理listProvider数据仅作为一条记录返回的情况?

Actionscript 3 如何处理listProvider数据仅作为一条记录返回的情况?,actionscript-3,apache-flex,flash-builder,flex4.6,flash-builder4.5,Actionscript 3,Apache Flex,Flash Builder,Flex4.6,Flash Builder4.5,Im使用HTTPservice加载XML并在列表中显示结果-当找到超过1条XML记录时,它会起作用。。。。但是,当只有一条返回的XML记录时,由于某种原因,会对其进行不同的处理,并生成以下错误: Suspended: TypeError: Error #1034: Type Coercion failed: cannot convert mx.utils::ObjectProxy 我看到这样的帖子: http://anupushkaran.blogspot.com/2010/02/typeer

Im使用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时,我可以看到,在成功的旅程中,Body会像这样返回:

SiteXYZ
  Events
     EventListing
        [0]
        [1]....  and so on....
SiteXYZ
   Events
      EventListing
但在返回单个记录的情况下,响应的主体返回如下:

SiteXYZ
  Events
     EventListing
        [0]
        [1]....  and so on....
SiteXYZ
   Events
      EventListing
那么,我是否应该能够检测到它只返回了一条记录,然后相应地设置列表数据提供程序?因此,当返回大量记录时,数据提供程序设置为:

list1.dataProvider = myXML.lastResult.SiteXYZ.Events.EventListing;
但当它只返回一条记录时,如何设置该数据提供程序?这不起作用:

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

有人能帮忙吗?我的进近是不是偏离了基地?很抱歉这个问题太过杂乱无章,但当我打字时,我停了大约5次,并尝试了一些我在思考时想到的事情。。。但还是没什么用。。。我觉得我发现了一些问题(虽然可能是错的),但还是无法解决。

答案在我引用的原始网站上

我仔细查看了那篇文章所说的问题是什么,以及代码片段是如何解决的,并且能够通过将它放入我的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));
}
现在,当有一条记录返回时,它显示为罚款。。。对于返回的多个记录也是如此


不过谢谢你的帮助。。。我一定会保存这个片段以备将来使用

大约两年前,我在Flex3中遇到了这个问题,我不记得我做了什么。但我想我必须为它制作一个自定义项目渲染器。我可以在几分钟内查看代码hours@The_asMan-谢谢。我很感激。我已经到了这样的地步,我基本上在考虑用一个额外的假记录填充我的xml,然后设置某种类型的标志,试图在列表构建后抑制/隐藏它。。。悲伤,我可能不会这么做,但我认真考虑了一下!在我看来,根据描述,在第一种情况下,您将返回一个数组。在第二种情况下,您不返回数组。这对我来说似乎很不寻常。为什么第二种情况不返回一个包含单个元素的数组?比如:EventListing[0]。纠正不一致的结构应该可以解决这个问题。。。这就是我的全部。我希望它能像预期的那样做同样的事情并返回数据——但是当一条记录真的困扰我的时候,它返回的结果就完全不同了。以下是我在原始帖子中引用的网站/url上看到的解释:“在大多数情况下,当我们从服务器访问数据时,结果将作为ArrayCollection返回。但它有可能作为ObjectProxy到达客户端。例如,如果我们正在读取一个只有零个或一个标记的XML文件,它将不会以ArrayCollection而不是ObjectProxy的形式返回结果。”