2016-07-14 6 views
0

配列を含むFirebase Data Snapshotからデータを読み込んでいます。 私はこの文字列を[String:AnyObject]という変数にfetcastDictと言う言葉で書き留めました。今すぐに、sensorValuesを素早く読み取り可能な配列に変換したいと思います。 NSArrayの、[INT]にそれをダウンキャストFirebase ArrayをSwift Arrayに変換するには?

  1. が、それは仕事をdidntの:私は

    print(fetchedDict!["sensorValues"].dynamicType) 
    

    私が配列にそれを変換するための2つのアプローチを試してみました
    オプションですsensorValuesのdynamicTypeをチェックします。

  2. 遊び場で働いていたミラー機能(最後に表示されます)を書きましたが、悲しいことにiOSアプリケーションでは機能しませんでした。それは私に与えたタイプ 'Swift.Array'(0x117a24028)の値を 'Swift.Int'にキャストできません

誰かがこれを解決するために私を導くことができますか?ありがとう!

rootRef!.observeEventType(.Value, withBlock: { (snapshot) in 

     for child in snapshot.children.allObjects { 
      let snap = child as! FIRDataSnapshot 
      let fetchedDict = snap.value as? [String: AnyObject] 
}) 

これはfetchedDictです:iOSアプリで作業をdidntの

[ 
    "activityDuration": 15; 
    "sensorValues": (
     5, 
     24, 
     24, 
     13, 
     22, 
     4, 
     42, 
     13, 
     3, 
     4 
    ); 
    "timestamp": 20160713184023; 
] 

ミラー機能。引数型としてAnyおよびAnyObjectを試行します。このコードは、しかし、遊び場で動作します。

func tupleToArray(sensorValues: Any) -> [Int] { 
    let mirror = Mirror(reflecting: sensorValues) 
    var arr = [Int]() 
    for child in mirror.children{ 
     let stringedValue = (child.value) as! Int 
     arr.append(stringedValue) 
    } 
    return arr 
} 
+0

なぜ 'child.value'で読むために?なぜただの子供ではないのですか? Int'? –

+0

この作品のようにループしていますか? fetchedDictのiのための !["sensorValues"]として! Int –

+0

@ÖzgürErsilそれも試してみました...警告を出します子供から無関係な型intへのキャストは常に失敗します。そして私が関数を呼び出すとき - 実行が中断されました。 –

答えて

3

NSArrayとして読み込み、それからSwift配列を作成できますか?

array_node 
    0: "index 0" 
    1: "index 1" 
    2: "index 2" 

を考えると、それは

let myRef = self.myRootRef.childByAppendingPath("array_node") 
    myRef.observeSingleEventOfType(.Value, withBlock: { snapshot in 

     let a = snapshot.value as! NSArray 
     print(a) 

     let b = (a as Array).filter {$0 is String} 

     print(b) 
    }) 

出力は

(
    "index 0", 
    "index 1", 
    "index 2" 
) 
[index 0, index 1, index 2] 
+0

はい、私は持っている可能性があります。しかし、私はすべての子供を繰り返しています。しかし、今私はあなたが提案したものと条件付きチェックを使うことができることを理解しています。ありがとう! :) –

関連する問題