我正在尝试显示当前用户发布的所有图片。正如您在表格视图中所看到的,每当当前用户发布图像时,它会自动为当前用户信息下的图像创建唯一ID。
在此图像中,您将看到当用户发布图像时,它会为其图像创建一个名为media的节点。
这是我的代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellMe", for: indexPath) as! MyPosttTableViewCell
FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid).observeSingleEvent(of: .value, with: { (snapshot) in
// check if user has photo
if snapshot.hasChild("media") != nil{
print("found it")
//set image locatin
let filePath = "\(FIRAuth.auth()!.currentUser!.uid)/\("media")"
FIRStorage.storage().reference().child(filePath).data(withMaxSize: 10*1024*1024, completion: { (data, error) in
let userPhoto = UIImage(data: data!)
cell.Myimages.image = userPhoto
})
}
else {
print("nil")
}
})
return cell
}}
答案 0 :(得分:0)
用户节点中的媒体存储为NSDictionary,而不是String。您必须遍历媒体节点才能获取所有文件的路径。你可以做点什么
//Create reference to media directly instead
FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid).child("media").observeSingleEvent(of: .value, with: { (snapshot) in
if let media = snapshot.value as? NSDictionary {
//Loop thorugh all the entries in your media node to get all the media paths
for (_, value) in media {
FIRStorage.storage().reference().child("media").child(value as! String)
//get the file now that you have the reference
}
}
})
答案 1 :(得分:0)
如果要将图像添加到特定ID,那么将图像上传到firebase存储区,以绝对字符串形式获取image.downloadurl,并将此值添加到密钥" image"到您的对象,然后将对象发布到firebase数据库。