![](/img/trans.png)
[英]Swift 4: Passing from table view to view controller - Firebase?
[英]Swift 3 Firebase retrieving key and passing to view controller
我已經花了幾個小時來研究相同的問題,但是我發現的答案都沒有對這個問題有所幫助。 簡單的應用程序從Firebase
數據庫檢索數據,然后從tableview傳遞到另一個視圖控制器。 主數據將通過,但是如果沒有標識的“鍵”(我嘗試將其設置為childByAutoID()
但隨后更改為timestamp
childByAutoID()
我將無法編輯信息。 不管采用哪種方法,我得到的只是條目信息,而不是實際的密鑰本身。
func loadData() {
self.itemList.removeAll()
let ref = FIRDatabase.database().reference()
ref.child(userID!).child("MyStuff").observeSingleEvent(of: .value, with: { (snapshot) in
if let todoDict = snapshot.value as? [String:AnyObject] {
for (_,todoElement) in todoDict {
let todo = TheItems()
todo.itemName = todoElement["itemName"] as? String
todo.itemExpires = todoElement["itemExpires"] as? String
todo.itemType = todoElement["itemType"] as? String
self.itemList.append(todo)
print (snapshot.key);
}
}
self.tableView.reloadData()
}) { (error) in
print(error.localizedDescription)
}
}
您要查找的鍵位於for循環的迭代器中
在if-let內部,嘗試執行以下操作:
for (key,todoElement) in todoDict {
print(key) // this is your childByAutoId key
}
這應該可以解決問題。 否則請向我們顯示您的數據庫結構的屏幕
如果您的數據如下所示:
Uid: {
MyStuff: {
AutoID: {
itemName: “Apocalypse”,
itemExpires: “December 21, 2012”,
itemType: “Catastrophic”
}
}
}
然后我會這樣查詢:
ref.child(userID!).child("MyStuff").observeSingleEvent(of: .value, with: { (snapshot) in
for child in snapshot.children {
let child = child as? DataSnapshot
let key = child?.key as? String
if let todoElement = child?.value as? [String: Any] {
let todo = TheItems()
todo.itemName = todoElement["itemName"] as? String
todo.itemExpires = todoElement["itemExpires"] as? String
todo.itemType = todoElement["itemType"] as? String
self.itemList.append(todo)
self.tableView.reloadData()
}
}
})
另外,就像我在評論中說的那樣,如果您使用的是.updateChildValues()
則只需將密鑰與數據一起上傳即可。 例:
let key = ref.child("userID!").childByAutoId().key
let feed = ["key": key,
“itemName”: itemName] as [String: Any]
let post = ["\(key)" : feed]
ref.child("userID").child("MyStuff").updateChildValues(post) // might want a completionBlock
然后,您可以按照獲取其余值的相同方式獲取密鑰。 因此,您的新數據將如下所示:
Uid: {
MyStuff: {
AutoID: {
itemName: “Apocalypse”,
itemExpires: “December 21, 2012”,
itemType: “Catastrophic”,
key: “autoID”
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.