2017-10-06 118 views
0

嗨,那裏我是最新的快速。我正在使用2層層次結構的Firebase數據庫以及每個節點的許多子節點。我得到第一層(描述,enddata和其他),但我stll無法獲得新聞節點。是在3到5個隨機密鑰。我播種了很多問題,但對我來說仍然沒有問題。無法獲取Firebase兒童的節點

我明白我做錯了,但是什麼?

的火力地堡是:

enter image description here

我需要撤退的消息孩子

結構是

struct ICONews { 
    let ICOId: String 
    let news1: String 
    let news2: String 
    let news3: String 
    init?(ICOId: String, dict: [String: Any]) { 
     self.ICOId=ICOId 
     guard let news1 = dict[""] as? String, 
     let news2 = dict[""] as? String, 
     let news3 = dict[""] as? String 
     else { return nil } 
     self.news1 = news1 
     self.news2 = news2 
     self.news3 = news3 
    } 
} 

struct NewsSnapShot { 
    let posts: [ICONews] 
     init?(with snapshot: DataSnapshot) { 
     var posts = [ICONews]() 
      guard let snapDict = snapshot.value as? [String: [String: Any]] else { return nil } 
      for snap in snapDict { 
       guard let post = ICONews (ICOId: snap.key, dict: snap.value) else {continue} 
       posts.append(post) 
      } 
      self.posts=posts 
    } 
} 

級數據庫的

class DatabaseService { 
    static let shared = DatabaseService() 
    private init(){} 
    let ICOReference = Database.database().reference() 
} 

和撤退方法

DatabaseService.shared.ICOReference.child("news").observe(DataEventType.value, with: { (snapshot) in 
    guard let postsSnapShot = ICOSnapShot(with: snapshot) else {return}  
}) 
+0

我試圖做這樣的,但 – Eugeny

+0

您的節點 「-KtqP2YmNO2FjIW5DiPT」,是因爲汽車的編號,你可以通過靜態文本作爲基節點。或者您可以跟蹤的動態節點。像數字。 – Max

回答

0

充分利用了火力地堡API調用喜歡做

Database.database().reference().child("users").child(userID).observe(.childAdded, with: { (snapshot) in 
       if snapshot.exists() { 
        let receivedMessage = snapshot.value as! [String: Any] 

        let name = receivedMessage["name"] as? String ?? "" 
        let id = receivedMessage["id"] as? Double ?? 0.0 
        let profileurl = receivedMessage["url"] as? String ?? "" 

        completion(User(name: name, id: id, url: url)) 
       } else { 
        failure() 
       } 
}) 
+0

其實我不認識孩子(「用戶」)。在我的基地它的名字就像「-KtqP2YmNO2FjIW5DiPT」 – Eugeny

+0

這是由消防基地創建的自動遞增值,所以你可以將此ID保存在型號 –

+0

但是如何?可以舉個小例子嗎? – Eugeny

0

Database.database().reference().observeSingleEvent(of: .value, with: {(snapshot) in 
let enumerator = snapshot.children 
while let rest = enumerator.nextObject() as? DataSnapshot { 
    let values = (rest as! DataSnapshot).value as? NSDictionary 
     let enumeratorMap1 = (rest as! DataSnapshot).children 
     while let rest2 = enumeratorMap1.nextObject() as? DataSnapshot { 
      let valuesMap1 = (rest2 as! DataSnapshot).value as? NSDictionary 
      if (rest2 as! DataSnapshot).key == "news" { 
       print(rest2.value) 
      } 
     } 
    } 
})