我知道downloadURL函数已被弃用,但似乎无法使新的完成函数起作用:
@IBAction func postButtonClicked(_ sender: Any) {
let mediaFolder = Storage.storage().reference().child("media")
if let data = UIImageJPEGRepresentation(postImage.image!, 0.5) {
mediaFolder.child("\(uuid).jpg").putData(data, metadata: nil, completion: { (metadata, error) in
if error != nil {
let alert = UIAlertController(title: "Error", message: error?.localizedDescription, preferredStyle: UIAlertControllerStyle.alert)
let okButton = UIAlertAction(title: "OK", style: UIAlertActionStyle.cancel, handler: nil)
alert.addAction(okButton)
self.present(alert, animated: true, completion: nil)
} else {
let imageURL = mediaFolder.downloadURL(completion: { (url, error) in
if error != nil {
print("error!!!!")
} else {
return url?.absoluteString
}
})
print(imageURL)
}
})
}
}
我无法使它正常工作。我总是得到错误!消息在日志中,我不确定为什么。在过去的3个小时里,我一直在努力处理这段代码,由于某种原因,我无法打印imageURL。
我只想让imageURL等于url?.absoluteString
任何帮助将不胜感激
答案 0 :(得分:0)
您没有获得要打印的URL,因为您没有查询正确的存储引用。
首先,检查图像是否实际上已上传到存储中,然后在mediaFolder
语句中将子ID添加到您的else
中:
mediaFolder.child("\(uuid).jpg").downloadURL(completion: { (url, error) in
})