1


1

このような多くのFlexオブジェクトがあります。

パブリッククラスMyData {public var time:Date; public var label:文字列。 }

このオブジェクトは、AMFを介して取得されたDBレコードから作成しています。これは次のようになります。

{label: "Label"、出来事: "2009-08-15 11:12:14.12233"}

ターゲットオブジェクト(ここでは MyData`のインスタンス)と入力レコードが与えられると、 MyData.time`が `Date`フィールドであることを伝えることができ、型を実行することができる、これらのオブジェクト用の汎用値マッパーを書きたい自動的にマッピングします。 このようなもの:

関数マップ(obj、targetType):* {var newInstance:* = new targetType(); for(varプロパティ:objの文字列){if(getPropertyType(targetType、プロパティ)==日付){newInstance [プロパティ] = parseDate(obj [プロパティ]) } else {newInstance [property] = obj [property];} }}}

function getPropertyType(type_var:Class、property:String):クラス{// .. これが私がどうしたらよいかわからないことです}

誰かがここに空白を埋めることができますか?

3 Answer


3


おそらく describeTypeのようなものが必要です。 実際のオブジェクトにしたい場合は、おそらくgetDefinitionByName()を使用する必要があります。 だからあなたの関数の内容のためにこのようなもの:

var typeXml:XML = describeType(type_var [property]); getDefinitionByName(typeXml.type [0]。@ name)を返します。

コンパイルしていません。 それが役立つかどうか見るためにそこにそれを捨てるだけです。


0


オブジェクトのタイプを確認するには、 'is’演算子を使用できます。

http://livedocs.adobe.com/flex/3/langref/operators.html#is[is演算子]
関数マップ(obj、targetType):* {var newInstance:* = new targetType(); for(varプロパティ:objの文字列){if(obj [プロパティ]は日付){newInstance [プロパティ] = parseDate(obj [プロパティ]); } else {newInstance [property] = obj [property];} }}}

hth

こえん


-1


MyDataとしてObjectクラスの変数を変数クラスにマップする必要がある場合は、次のようにします。

パブリッククラスMyData {public var time:Date; public var label:文字列。

function map(obj:Object):void {for(varプロパティ:objの文字列){this [property] = obj [property]; }}}

注:オブジェクトobjには、正確な "time"および "label"プロパティが含まれていなければなりません。

それがあなたの問題を解決することを願っています