ios - 如何在表格 View 中添加 Firebase 值
<p><p>对于如何将表格 View 与 Firebase 上的值连接起来,我自己有一个问题,或者更确切地说是一个误解。</p>
<p>我的信息:</p>
<p>我有一个 Firebase,许多其他文件夹之一称为“Flights”。在我的应用程序 View 中,我可以按照以下路径在此文件夹中添加一些信息:Flights > userId > autoId > 我感兴趣的值,包括日期和其他一些字符串</p>
<p>我的问题是:</p>
<p>如何在 tableView 中添加,当这个是由 viewDidLoad 创建时,我的文件夹中的每个 autoId 一个新的个性化单元格 Flights > userId ?</p>
<p>我的尝试:</p>
<p>我声明我的数组:</p>
<pre><code> var datas: = []
</code></pre>
<p>我调用 viewDidLoad() 这个函数:</p>
<pre><code>func loadFlights() {
ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
ref.child("flights").child(userID!).childByAutoId().queryOrderedByKey().observe(.childAdded, with: { (snapshot) in
if let valueDictionary = snapshot.value as?
{
let date = valueDictionary["Date"]
let type = valueDictionary["aircraft-model"]
let registration = valueDictionary["aircraft-registration"]
let totalTime = valueDictionary["TOTAL-TIME"]
let depTime = valueDictionary["departure-time"]
let depPlace = valueDictionary["departure-place"]
let arrTime = valueDictionary["arrival-time"]
let arrPlace = valueDictionary["arrival-place"]
self.datas.append(Flight(from: date ?? "XX-XX-XX", type!, registration!, totalTime!, depTime!, depPlace ?? "NIL", arrTime!, arrPlace!))
self.tableView.reloadData()
}else{
// nothing need to happens
}
})
}
</code></pre>
<p>最后我有我的表管理器部分:</p>
<pre><code>// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return datas.count
//return newFlight.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// creer la cellule
let cell = tableView.dequeueReusableCell(withIdentifier: "lbCells") as! LogBookCell
cell.dateLabel.text = datas.date
cell.typeLabel.text = datas.type
cell.RegistrationLabel.text = datas.regi
cell.totalTimeLabel.text = datas.totalTime
cell.depTimeLabel.text = datas.depTime
cell.depPlaceLabel.text = datas.depPlace
cell.arrTimeLabel.text = datas.arrTime
cell.arrPlaceLabel.text = datas.arrPlace
return cell
}
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete{
datas.remove(at: indexPath.row)
tableView.reloadData()
}
}
</code></pre>
<p>我不明白为什么当我在我的应用程序上加载 tableView 页面时什么都没有出现...</p>
<p>感谢您的帮助!</p>
<p>Flyer-74</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您可以在添加或删除时观察一个值。</p>
<pre><code>var ref: DatabaseReference! = Database.database().reference()
ref.child("devices").child(user!.uid).child("device_name").setValue("iPhone test")
let newRef = ref.child("rooms").childByAutoId()
newRef.child("name").setValue("Room test")
ref.child("devicesrooms").child(newRef.key).child(user!.uid).setValue(true)
let ev = ref.child("devicesrooms").child(newRef.key)
var deviceNames = ()
var deviceHandles = ()
// Listen for added devices
ev.observe(.childAdded, with: { (snapshot) -> Void in
// Retrieve device key
let deviceKey = snapshot.key
// Add observer on device
var handle: UInt = 0
handle = ref.child("devices").child(deviceKey).observe(.value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
let deviceName = value?["device_name"] as? String ?? ""
// Update or Add deviceName and handle in your dictionary
deviceNames = deviceName
deviceHandles = handle
})
})
// Listen for removed devices
ev.observe(.childRemoved, with: { (snapshot) -> Void in
let deviceKey = snapshot.key
// Remove deviceName from your dictionary
deviceNames = nil
// Retrieve handle from your dictionary
if let handle = deviceHandles {
// Remove observer on device
ref.child("devices").child(deviceKey).removeObserverWithHandle(handle)
}
// Remove handle from your dictionary
deviceHandles = nil
})
</code></pre></p>
<p style="font-size: 20px;">关于ios - 如何在表格 View 中添加 Firebase 值,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/53073198/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/53073198/
</a>
</p>
页:
[1]