2016-10-02 2 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