2012-03-11 4 views
0

私はモバイルベースのフレックスアプリケーションを開発しようとしています。FlexモバイルArrayCollectionエラー

私のアプリケーションでは、2つのビューがあります。

私は別のビューにあるビューからのデータとしてのArrayCollectionを渡すためにしようとしていますが、2番目のビューの上のArrayCollectionにアクセスしようとしている間、私はエラーを取得しています。..

はここでコードがfirstView.mxmlからです

dirSteps

​​
...私は、次のビューに渡すためにしようとしていますArrayCollectionのです

DetailDirection.mxmlからコード:

[Bindable] 
private var directionList:ArrayCollection; 

private function init():void { 
    directionList = new ArrayCollection(ArrayUtil.toArray(data)); 

    // here, data should be my arraycollection, but throws above error on 
    // trying to access property (i.e Step, Distance etc ..) of ArrayCollection ... 
    trace(data.Distance); 
} 

Error: Unknown Property: 'Distance'. at mx.collections::ListCollectionView/http://www.adobe.com/2006/actionscript/flash/proxy::getProperty()[E:\dev\4.y\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:870] at views::DetailDirection/init()[C:\Documents and Settings\ARSENAL\Adobe Flash Builder 4.6\CityExplorer_v2.0\src\views\DetailDirection.mxml:21] at views::DetailDirection/___DetailDirection_View1_creationComplete()[C:\Documents and Settings\ARSENAL\Adobe Flash Builder 4.6\CityExplorer_v2.0\src\views\DetailDirection.mxml:6] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.core::UIComponent/dispatchEvent()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:13152] at mx.core::UIComponent/set initialized()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:1818] at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:842] at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1180]


このエラーの原因は何?何をする必要がありますか?

ここでは何も欠けていますか?

答えて

0

の距離は、それがエラーをスローする理由であるArrayCollection上の文書プロパティではありません

感謝。

通常、dataプロパティは汎用オブジェクトです。 Flexコンパイラは一般にプロパティに直接アクセスするときコンパイルエラーをスローしません。

おそらく、ArrayCollection内の項目にアクセスする必要があります。

((data as ArrayCollection).getItemAt(0) as MyObjectType).distance 
+0

'MyObjectType'は何ですかここに ?どのタイプのオブジェクトについて話していますか? – tomjerry

+0

^ありがとうございます。あなたの努力が働いた。しかし、私の2番目のビューに 'data'の値を格納しようとすると、次のようになります。 ' private var arr:ArrayCollection = new ArrayCollection(ArrayUtil.toArray(data)); ' '(ArrayCollectionとしてのarr .getItemAt(0)MyObjectType).distance' ..「距離プロパティ不明」と同じエラーがスローされます... – tomjerry

+0

@tomjerry「MyObjectType」はオブジェクトタイプです。あなたのdataProvider内のオブジェクトこのようなArrayCollectionを初期化すると、一度設定されます。おそらくデータプロパティが設定される前です。値にアクセスして何が間違っているのかを確認しようとすると、コードをステップ実行する必要があります。 ArrayCollectionは有効ですか?アクセスしようとしているアイテムがArrayCollectionに存在しますか?それは正しくキャストされていますか?そして最後に、それは距離のプロパティを持っていますか? – JeffryHouser

0

ここでdataはArrayCollectionです。だから、直接

のでdata[index].Distance

data.Distance

data[index]はあなたにオブジェクトを与えるアクセスできません。例えば:あなたのケースの使用ループで

var data:ArrayCollection = new ArrayCollection(); 

data.addItem({name:"jack", distance:300}); 
data.addItem({name:"jill", distance:400}); 

trace(data[1].distance); // prints 400 

private function init():void { 

    for(var i:int = 0; i < data.length; i++){ 

     var item:Object = data[i]; 
     trace(item.Distance); 

    } 

} 
+0

あなたのsolnは、同じビューでarraycollectionにアクセスしようとしている場合にのみ機能します。しかし、私はその配列コレクションをsecondviewに渡してアクセスしたいと思います。だから、あなたの解決策はそのような場合にはうまくいかないかもしれません。 – tomjerry

+0

ArrayCollectionに追加されたオブジェクトにアクセスする方法を示しています。あなたはインデックスを与える必要があります。 – Diode

+0

はい、しかし、私は2番目のビューからアクセスしようとしている場合にアクセスする方法は? – tomjerry

関連する問題