2017-04-24 48 views
0

我試圖在tableview中爲每個單元格加載不同的值。目前,我加載了一個teamID,將其顯示在當前單元格中,然後使用該ID加載團隊的其他屬性。無法加載表格單元格的值firebase

self.ref?.child("Teams").child(currentTeamID).child("Number").observeSingleEvent(of: .value, with: { (snapshot) in 
       let number1 = snapshot.value as? Int 
       if let teamNum = number1 { 
        Cell.teamNumber.text = "team " + String(teamNum) 
        //breakpoint 
       } 
      }) 
      self.ref?.child("Teams").child(currentTeamID).child("memberCount").observeSingleEvent(of: .value, with: { (snapshot) in 
       let memcon = snapshot.value as? Int 
       if let membercount = memcon { 
        Cell.userCount.text = "Members: " + String(membercount) 
        //breakpoint 
       } 
      }) 
     return Cell 

我試圖加載這些其他屬性時出現問題。我應該這樣做是一種不同的方式?現在它只加載第二個.observeSingleEvent我試過在上面指出的位置放置斷點,但只有第二個被擊中。我是否需要單獨的引用,或者是否有方法來加載父對象的所有值?

謝謝一大堆。

新增火力地堡結構:

ftc-scouting-app 
    Teams 
     Brophy Robotics 
      Name: "Brophy Robotics" 
      Number: "201" 
      Password: "bronco" 
      memberCount: 2 
      memberList 
       member1: "5ilQc8KlrERLAmtFXjWaOZLIcoC3" 
       member2: "syV9SS6S9hY8PyKBOC0VQ3NNv0v2" 

    Users 
     5ilQc8KlrERLAmtFXjWaOZLIcoC3 
      (User Info Values) 
     syV9SS6S9hY8PyKBOC0VQ3NNv0v2 
      (User Info Values 

我試圖加載的值是團隊數和會員數。我想把它們放在每個用戶擁有的每個團隊中的單元格中。所以,我只是需要它加載每個值,並將其放在我的自定義表格視圖單元格,它具有所有的字段。澄清 - 我已經知道它能夠正確地檢索團隊ID,因爲它可以將它放在單元格上。

currentTeamID值是我已經加載的值,並且是當前單元格的預期團隊的id(與名稱相同)。

+0

是,有一種方法可以加載父對象的所有值。但是,如果沒有看到Firebase結構(請使用TEXT,無圖片),則很難制定出答案。 – Jay

+0

嘿!非常感謝。我只是添加了firebase結構(我試圖清楚地寫出它),並試圖添加一些解釋,如果有幫助? –

回答

1

首先,改變結構

ftc-scouting-app 
    Teams 
     Jyis9009kos0kslk //should be generated with childByAutoId() 
      Name: "Brophy Robotics" 
      Number: "201" 
      Password: "bronco" 
      memberCount: "2" 
      memberList: 
       5ilQc8KlrERLAmtFXjWaOZLIcoC3: true //uid as the key 
       syV9SS6S9hY8PyKBOC0VQ3NNv0v2: true 

    Users 
     5ilQc8KlrERLAmtFXjWaOZLIcoC3 
      (User Info Values) 
     syV9SS6S9hY8PyKBOC0VQ3NNv0v2 
      (User Info Values) 

然後,讓我們只檢索了一個團隊節點,並得到一些數據

let teamsRef = self.ref.child("ftc-scouting-app").child("Teams") 
let thisTeamRef = teamsRef.child("Jyis9009kos0kslk") 

thisTeamRef.observeSingleEvent(of: .value, with: { snapshot in 

    let teamDict = snapshot.value as! [String: AnyObject] 

    let teamName = teamDict["Name"] as! String 
    print(teamName) 
    let memCount = teamDict["memberCount"] as! String 
    print(memCount) 
    let memberList = teamDict["memberList"] as! [String: AnyObject] 

    for user in memberList { 
     print(user.key) 
    } 
}) 

和輸出

Brophy Robotics 
2 
5ilQc8KlrERLAmtFXjWaOZLIcoC3 
syV9SS6S9hY8PyKBOC0VQ3NNv0v2 
+0

非常感謝! –

0

每個事件異步。你應該在每個事件中使用完成塊。

func getNumber (completion: @escaping (String)->()){self.ref?.child("Teams").child(currentTeamID).child("Number").observeSingleEvent(of: .value, with: { (snapshot) in 
       let number1 = snapshot.value as? Int 
       if let teamNum = number1 { 
        completion(String(teamNum)) 
       } 
      })} 

    getNumber(completion: {(teamNum) in 
    self.ref?.child("Teams").child(currentTeamID).child("memberCount").observeSingleEvent(of: .value, with: { (snapshot) in 
        let memcon = snapshot.value as? Int 
        if let membercount = memcon { 
         Cell.teamNumber.text = "team " + teamNum 
         Cell.userCount.text = "Members: " + String(membercount) 
         //breakpoint 
        } 
       }) 
    })