2009-09-02 7 views
1

私はこの1つのような多くのFlexオブジェクトを持っている:Flex3では、オブジェクトプロパティはどのようなタイプですか?

public class MyData { 
    public var time: Date; 
    public var label: String; 
} 

私は次のようになりますAMF経由で取得DBレコードからこのオブジェクトを移入しています:

{ 
    label: "Label", 
    incident: "2009-08-15 11:12:14.12233" 
} 

私は一般的な値を書きたいですターゲットオブジェクト(ここではMyDataのインスタンス)と入力レコードを指定すると、MyData.timeDateフィールドであり、自動的に型マッピングを実行できることがわかります。このようなもの:

function map(obj, targetType): * { 
    var newInstance: * = new targetType(); 
    for (var property: String in obj) { 
     if (getPropertyType(targetType, property) == Date) { 
      newInstance[property] = parseDate(obj[property]); 
     } 
     else { 
      newInstance[property] = obj[property]; 
     } 
    } 
} 

function getPropertyType(type_var: Class, property: String): Class { 
    // .. this is what I have no idea how to do 
} 

誰かが空白をここに記入できますか?

答えて

3

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

var typeXml:XML = describeType(type_var[property]); 
return getDefinitionByName(typeXml.type[0][email protected]); 

私はそれをコンパイルしていません。それが助けになるかどうかを調べるためにそこに投げ込むだけです。

+0

ありがとう、それは私が必要としていたものです! –

0

'is'演算子を使用して、オブジェクトのタイプをチェックすることができます。

The is operator

function map(obj, targetType): * { 
    var newInstance: * = new targetType(); 
    for (var property: String in obj) { 
    if (obj[property] is Date) { 
     newInstance[property] = parseDate(obj[property]); 
    } 
    else { 
     newInstance[property] = obj[property]; 
    } 
    } 
} 

HTH

公園

+0

obj [property]が定義されていない場合は動作しますか? –

+0

定義されていないプロパティの 'is演算子'を使用すると、常にfalseが返されます –

+0

残念ながら、これは私が探している答えではありません。 –

-1

あなたは以下の

public class MyData 
{ 
    public var time: Date; 
    public var label: String; 

    function map(obj:Object):void 
    { 
     for (var property: String in obj) 
     { 
      this[property] = obj[property]; 
     } 
    } 
} 

注を行うことができますのMyDataとして変数クラスにオブジェクト変数をマップする必要がある場合:オブジェクトobjには、正確な "time"と "label"プロパティが含まれていなければなりません。

あなたの問題を解決することを願って

関連する問題