2017-08-13 36 views
3

我試圖從Firebase數據庫檢索數據並將結果存儲在字典數組中。我想以這種方式存儲數據......將Firebase數據轉換爲字典數組。 iOS,Swift

[[郵編:郵編,緯度:87.28764862,經度:-23.94679475694,註冊:註冊],[郵編:郵編,緯度:87.28764862,經度:-23.94679475694 ,報名時間:報名],[郵編:郵編,緯度:87.28764862,經度:-23.94679475694,報名時間:報名]

我得到的結果是...

託尼:前追加後[] Tony:post [appname.Post]

我哪裏錯了?

var places = [String]() 
var postsNew = [Post]() 
var posts = [String: Any]() 

DataService.ds.REF_POSTS.observe(.value, with: { (snapshot) in 
     if snapshot.hasChild("postCodes") { 
      let refToUser = DataService.ds.REF_POSTS 
      refToUser.child("postCodes").observe(.value, with: { snapshot in 

       let value = snapshot.value as? NSDictionary 
       let postsIds = value?.allKeys as! [String] 
       for postId in postsIds { 
        let refToPost = Database.database().reference(withPath: "posts/" + "postCodes/" + postId) 
        refToPost.observe(.value, with: { snapshot in 
         if snapshot.exists() { 

          let postDict = snapshot.value as? Dictionary<String, AnyObject> 
          let pCodeData = snapshot.key 
          let post = Post(postKey: pCodeData, postData: postDict!) 


          self.configureCell(post: post) 
          print("Tony: before append post \(self.postsNew)") 
          self.postsNew.append(post) 
          print("Tony: post \(self.postsNew)") 


       }else { 
          print("Tony: Couldn't get the data") 
         } 
        }) 
       } 
      }) 
     }else { 
      print("Tony: No Favs added, couldn't get the data") 
     } 

    }) 


func configureCell(post: Post) { 
    self.postData = post 

    self.latitude = post.latitude 
    self.longitude = post.longitude 
    self.postCodeDB = post.postCode 
    self.registration = post.other2 

} 

,並在我的後級..

init(postKey: String, postData: Dictionary<String, AnyObject>) { 
    self._postKey = postKey 

我的火力點數據...... Firebase data

如果我再添一到我的火力點我得到這樣的結果......

回答

1

我通過查看我的代碼找到了答案。

DataService.ds.REF_POSTS.child("postCodes").observe(.value, with: { (snapshot) in 

       let value = snapshot.value as? NSDictionary 
       let postsIds = value?.allKeys as! [String] 
       for postId in postsIds { 
        let refToPost = Database.database().reference(withPath: "posts/" + "postCodes/" + postId) 
        refToPost.observe(.value, with: { snapshot in 
         if snapshot.exists() { 

          let postDict = snapshot.value as? [String: AnyObject] 

          print("Tony: before append post \(self.posts)") 
          self.posts.append(postDict!) 
          print("Tony: post \(self.posts)") 
          self.showSightingsOnMap() 

       }else { 
          print("Tony: Couldn't get the data") 
         } 
        }) 
       } 
      })