2010-04-29 44 views
2

我得到這個錯誤,當我檢索一個XML只有1節點(沒有重複節點),我嘗試存儲在一個ArrayCollection。 - 當我有超過1個「名稱」節點...我沒有得到一個錯誤。Flex中的ArrayCollection錯誤不接受單個XML節點 - 替代方法?

TypeError: Error #1034: Type Coercion failed: cannot convert "XXXXXX" to mx.collections.ArrayCollection. 

這個錯誤發生的代碼行:

myList= e.result.list.name; 

爲什麼不能用單一節點的ArrayCollection工作?我使用這個ArrayCollection作爲組件的數據提供者 - 是否有我可以使用的替代方案,它既可以使用單個重複節點,也可以作爲數據提供者使用?提前致謝!

代碼:

[Bindable] 
private var myList:ArrayCollection= new ArrayCollection(); 

     private function getList(e:Event):void{ 

      var getStudyLoungesService:HTTPService = new HTTPService(); 
      getStuffService.url = "website.com/asdf.php"; 
      getStuffService.addEventListener(ResultEvent.RESULT, onGetList); 
      getStuffService.send(); 

     } 

     private function onGetList(e:ResultEvent):void{ 

      myList= e.result.list.name; 
     } 

回答

1

resultFormat應設置爲e4x

var getStudyLoungesService:HTTPService = new HTTPService(); 
getStuffService.url = "website.com/asdf.php"; 
getStuffService.resultFormat = "e4x"; 
getStuffService.addEventListener(ResultEvent.RESULT, onGetList); 
getStuffService.send(); 

然後你可以檢索結果如下:

new XMLListCollection(e.result.list.name); 

(所有學分Amarghosh,一直敲我的腦袋上一個小時,但幾乎錯過了他的評論!)

0

不能直接分配XML或者甚至XMLListArrayCollection類型的變量。使用XMLListCollection並將數據傳遞給其構造函數。

[Bindable] 
private var myList:XMLListCollection; 

myList = new XMLListCollection(e.result.list.name); 
+0

謝謝Amarghosh。但是,它看起來並不像的XMLList是一個有效的數據提供程序..我得到這個錯誤: 類型錯誤:錯誤#1034:類型強制失敗:無法mx.collections ArrayCollection的:: @ ddbc7c1轉換成的XMLList。 是否還有另一種數據類型,我仍然可以使用? – Rees 2010-04-30 23:55:17

+0

它不是XMLList,它是'XMLListCollection'。更改myList從數組集合到xmllist集合的類型 – Amarghosh 2010-05-03 04:32:10

+0

再次amarghosh,我試過XMLListCollection,但是收到此錯誤: TypeError:錯誤#1034:類型強制失敗:無法將mx.collections :: ArrayCollection @ aaa0301轉換爲XMLList 。 我相信,當它的類型爲XMLList,因爲 私人VAR studyLounges:的XMLListCollection; 是我的初始化。任何其他想法什麼替代數據類型? – Rees 2010-05-16 07:59:53