Flex XML转ArrayCollection的问题
直接用ArrayCollection()强制转换,不要用new ArrayCollection()。用new ArrayCollection()会出错,出错信息:强制转换类型失败:无法将 mx.collections::ArrayCollection@5d89481 转换为 Array。
另外,如果通过HTTPService获取到的XML中只有一条数据,例如:
另外,如果通过HTTPService获取到的XML中只有一条数据,例如:
<tips>
<tip>
<no>16</no>
<date>2010/03/19</date>
<content>内容
</content>
</tip>
</tips>
就不能使用var myData:ArrayCollection = ArrayCollection(event.result.tips.tip);
这种方法创建ArrayCollection
要这样:
var data:Array = new Array({no:event.result.tips.tip.no,date:event.result.tips.tip.date, content:event.result.tips.tip.content});
myData = new ArrayCollection(data);
通过调试,可以看到如果返回的是多条记录,event.result.tips.tip是ArrayConlection类型的,
而如果只有一条记录,就是ObjectProxy类型的。见图:
参看ArrayConlection的构造函数:public function ArrayCollection(source:Array = null)
其参数是Array类型的,所以,只有一条记录的时候当然会出错了。