我想做的是致电某个帖子ID:
取决于在UITableView上点击的单元格,并在不同的ViewController上显示来自它的数据。目前,每个帖子都有不同的ID以及上面照片中显示的数据
我见过这种方法用于根据ID调用用户名:
let uid = FIRAuth.auth()?.currentUser?.uid
FIRDatabase.database().reference().child("users").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
self.userLabel.text = dictionary["username"] as? String
}
})
这可以通过上面的屏幕截图中显示的帖子ID来实现吗?如果是这样,最简单的方法是什么?
答案 0 :(得分:2)
好的,我简化了代码,因此我可以更容易地解释它。
首先在名为postID
的方法之外创建一个变量,并将其设置为FIRDatabase.database()。reference()。childByAutoID()
let postID = UUID().uuidString
然后在你的postObject中添加另一个set并设置你之前声明的变量"postID": postID
let postObject: Dictionary<String, Any> = [
"uid": uid,
"title": title,
"price": price,
"rating": rating,
"description": description,
"username" : username,
"image": self.imageFileName,
"postID": self.postID
]
最后替换FIRDatabase.database().reference().child("posts").childByAutoID().setValue(postObject)
FIRDatabase.database().reference().child("posts").child(self.postID).setValue(postObject)
答案 1 :(得分:0)
我遇到了与您相似的情况。您可以执行此操作的另一种方法是通过字典键获取postID。
此示例将获取所有postID,但这只是一个起点。
let json = JSON(value)
let keys = value.keys
for element in keys {
var postID = ""
for key in keys {
if element == key {
postID = key
}
}