我试图获取特定用户的图片网址,但最终却为我刚刚随机创建的两个用户获取了图片网址。我需要的只是一个用户ImageUrl,而不是两个。
func retrieveTheImage() {
let fullName = Database.database().reference(withPath: "User")
fullName.queryOrdered(byChild: "uid").queryEqual(toValue: "ghD0lYZV1QOeJ2giUc3fNVxsLAV2")
fullName.observeSingleEvent(of: .value) { (snapShot: DataSnapshot) in
for child in snapShot.children {
if let snap = child as? DataSnapshot {
if let snapShotValue = snap.value as? [String: String] {
let imageUrl = snapShotValue["ImageUrl"]!
print(imageUrl)
let storage = Storage.storage()
var reference: StorageReference!
reference = storage.reference(forURL: imageUrl)
reference.downloadURL { (url, error) in
let data = NSData(contentsOf: url!)
let image = UIImage(data: data! as Data )
self.pimageView.image = image
}
}
}
}
}
}
Firebase结构
{
"User" : {
"Ncat5zlIHGQxRHEwGSX0vgspyE02" : {
"FirstName" : "other",
"ImageUrl" : "someUrl",
"LastName" : "other",
"uid" : "Ncat5zlIHGQxRHEwGSX0vgspyE02"
},
"ghD0lYZV1QOeJ2giUc3fNVxsLAV2" : {
"FirstName" : "other",
"ImageUrl" : "someUrl",
"LastName" : "other",
"uid" : "ghD0lYZV1QOeJ2giUc3fNVxsLAV2"
}
}
}
答案 0 :(得分:3)
此行不执行任何操作:
fullName.queryOrdered(byChild: "uid").queryEqual(toValue: "ghD0lYZV1QOeJ2giUc3fNVxsLAV2")
对query...
API的调用将返回一个新的Query对象,因此您需要继续执行该操作:
let fullName = Database.database().reference(withPath: "User")
let query = fullName.queryOrdered(byChild: "uid").queryEqual(toValue: "ghD0lYZV1QOeJ2giUc3fNVxsLAV2")
query.observeSingleEvent(of: .value) { (snapShot: DataSnapshot) in