我正在製作一個應用程序,用戶可以在其中購買和出售門票。用戶可以創建新的故障單併成功上傳到Firebase,但是對故障單ID的引用存儲在引用故障單數據中的故障單ID的用戶數據中。數據庫的結構在下面:從Firebase解析數據時無法成功重新加載UITableView元素
DATABASE
- USERS
- 訂票
訂票
- TICKET INFO
USER
- 票用戶信息和訂票編號是賣
我的問題是我第一次從賣票它的優良加載門票。但是,當用戶添加他們銷售的新票時,表視圖會加載所有內容兩次。
override func viewWillAppear(_ animated: Bool) {
self.tickets = []
DataService.ds.REF_USER_CURRENT.child("selling").observe(.value, with: { (snapshot) in //HERE WE REFERNCE OUR SINGELTON CLASS AND OBSERVE CHAMGE TO THE POSTS OBJECT
self.tickets = [] //WE CLEAR THE POSTS ARRAY BEFORE WE START MANIPULATION TO MAKE SURE THAT WE DONT REPEAT CELLS
if let snapshot = snapshot.children.allObjects as? [DataSnapshot]{
print("ADAM: \(snapshot)")//CHECKING THAT THE OBJECTS EXIST AS AN ARRAY OF DATA SNAPSHOTS
for snap in snapshot {
DataService.ds.REF_TICKETS.child(snap.key).observe(.value, with: { (snapshot) in
if let ticketDict = snapshot.value as? Dictionary<String, AnyObject>{
let ticket = Ticket(ticketID: snap.key, ticketData: ticketDict)
self.self.tickets.append(ticket)
}
self.sell_ticketsTableView.reloadData()
})
}
}
//self.sell_ticketsTableView.reloadData()
self.tickets = []//RELAOD THE DATA
})
}
我不太確定我出錯的地方。
我真的不明白你在做什麼。這是什麼代碼「self.self.tickets.append(ticket) 」或這個「self.tickets = []」??你應該做的是在解析數據之前清空你的數據源數組,這樣你就不會有多次出現相同的票據 – Siyavash
@Siyavash self.tickets = []我是如何清除數據源數組的,因爲數據源是門票數組 – KONADO
請看我的回答 – Siyavash