swift - 获取图像后,uiimageview 不显示任何内容
问题描述
我是 Xcode 的新手。我正在尝试获取存储在 firebase 中的图像。但。当我尝试输入代码时,它什么也没显示。我正在尝试打印图像,它为零。教程很多,但是每一个我都看不懂。
func loadUserDetail() {
ref = Database.database().reference()
imgStorage = Storage.storage().reference()
let userID = Auth.auth().currentUser?.uid
ref.child("User").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let username = value?["name"] as? String ?? ""
let email = value?["email"] as? String ?? ""
let address = value?["address"] as? String ?? ""
let image = value?["image"] as? String ?? ""
let phone = value?["phone"] as? String ?? ""
let user = User(name: username, email: email, address: address, image : image, phone : phone)
self.fullnameTF.text = user.name
self.emailTF.text = user.email
self.PhoneTF.text = user.phone
let storageRef = self.imgStorage.child("User/\(userID!)/UserPic")
storageRef.getData(maxSize: 1 * 1024 * 1024) { data, error in
if let error = error {
print("error: \(error.localizedDescription)")
} else {
let image = UIImage(data: data!)
self.imgProfilePicture.image = image
}
}
})
{ (error) in
print(error.localizedDescription)
}
}
我认为问题在于当我上传从选择器获得的图像时:它显示图像大小为 0kb。
let fileData = NSData() // get data...
let storageRef = self.imgStorage.child("User/\(userUiD!)/UserPic")
storageRef.putData(fileData as Data).observe(.success) { (snapshot) in
// When the image has successfully uploaded, we get it's download URL
storageRef.downloadURL(completion: { (url, error) in
if (error == nil) {
if let downloadUrl = url {
// Make you download string
let downloadString = downloadUrl.absoluteString
self.ref.child("User").child(userUiD!).child("image").setValue(downloadString)
}
} else {
print("Error To Saved")
}
})
}}
解决方案
你应该let fileData = NSData()
用你的图像数据替换。NSData() 仅创建 0kb 的空数据对象,因此您应该将图像转换为如下数据:
var fileData = UIImagePNGRepresentation(image) // image is UIImage which you get from Picker
or
var fileData = UIImageJPEGRepresentation(image, 0.7)
推荐阅读
- ubuntu-16.04 - systemd-journald 日志位置
- android - 我有两个包含复选框的 BaseAdapter,如何根据来自 Adapter1 的值检查 Adapter2 的复选框
- javascript - Excel VBA在IE11中使用自动完成填充文本框
- php - PHP在窗口上回显日语
- c# - 如何为 PrintDocument C# 添加边框
- sql - 在动态表上获取“ORA00904:无效标识符”
- angular - Ionic V4(角度)content.scrollToTop
- node.js - 吉普错误!堆栈错误:`C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe`
- haskell - 为什么 `stack build` 不打印警告,但 `stack ghci` 会?
- mongodb - Projecting a field in MongoDB based of the value of another field