我对the服务调用的结果有问题。当结果出现并启动resultHandler函数时,我设置了一个断点,以便可以检查结果。我可以看到数组集合中有0条记录,但是我可以看到内容,所以我假设0只是引用数组的第一个索引
当我尝试将值赋给数组集合时,问题发生了,如下所示;
public function resultHandler(event:ResultEvent):void{
var result:ArrayCollection = event.result as ArrayCollection;此操作的结果是值为null的结果变量。有人能解释一下这里可能发生了什么吗?非常感谢
我刚刚注意到的另一件事是,结果类型是mx.utils.ObjectProxy,我需要一个数组
发布于 2009-02-05 18:56:42
Chetan是对的--对ArrayCollection的强制转换操作失败了,因为源对象不是ArrayCollection。试着这样做:
public function resultHandler(event:ResultEvent):void
{
var ac:ArrayCollection = new ArrayCollection([event.result])
// ...
}在运行时发生异常的情况下,"as“操作符将返回null --在您的示例中,将从ObjectProxy转换为ArrayCollection。相反,如果您将event.result作为数组的唯一成员传递(通过用[]包围它),那么您的ArrayCollection将被正确构造,并且您将能够正常地检索对象:
var o:Object = ac.getItemAt(0) as Object;
trace(o.yourObjectProperty.toString());希望它能帮上忙!
发布于 2009-02-05 18:43:41
如果webservice只返回一个元素,它将被反序列化为ObjectProxy。您必须手动将其转换为数组。
我通常会在WS调用之后这样做:
if (event.result is ArrayCollection) {
result = event.result;
}
else {
result = new ArrayCollection([event.result]);
}发布于 2009-02-05 20:19:18
数组中的0条记录是数组的长度,这实际上意味着0。如果数组的索引为0,则该数组的长度至少为1。看起来您没有得到任何数据,甚至没有空的数组集合。
https://stackoverflow.com/questions/517238
复制相似问题