2016-10-02 39 views
0

私は完全に働いているプロジェクト(Swift 2)をSwift 3に変換しています。文法の変更が残っています。これは働いていた機能で、今は好きではなく、うまくいかない奇妙な提案をします。Firebaseから子どもを辞書に読み込む(Swift 3)

var productsValue = [[String:AnyObject]]() 
    let ref = FIRDatabase.database().reference().child("Snuses").queryOrderedByChild("Brand").queryEqualToValue(brandName) 
      ref.observeSingleEventOfType(.Value, withBlock: { (snapshot) in 
       if snapshot.exists(){ 
        if let products = snapshot.value?.allValues as? [[String:AnyObject]]{//This is most confusing part. It suggest me so weird things 
         self.productsValue = products 
         self.productstable.reloadData() 
        } 
       } 
      }) 

私はそれを変換し、それはエラーがなく、それが値を持つproductValues辞書記入していません:

let ref = FIRDatabase.database().reference().child("Snuses").queryOrdered(byChild: "Brand").queryEqual(toValue: brandName) 
     ref.observeSingleEvent(of: .value, with: { (snapshot) in 
      if snapshot.exists(){ 
       if let products = (snapshot.value as AnyObject).allValues as? [[String:AnyObject]]{ 
        self.productsValue = products 
        self.productsTable.reloadData() 
       } 
      } 
     }) 

あなたがこの値を使用して、私の辞書を埋めるために得るために私を助けることができるの?

答えて

2
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] { 
    self.productsValue = snapshots.flatMap { $0.value as? [String:AnyObject] } 
    self.productsTable.reloadData() 
} 
+0

私の悪い、忘れられた '.value' - ちょうど私の答えを更新しました – Callam

関連する問題