【问题标题】:Uiimageview shows nothing after get image获取图像后,uiimageview 不显示任何内容
【发布时间】:2018-12-24 08:52:51
【问题描述】:

我是 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")
    }
})
}}

【问题讨论】:

  • 这条线是否被称为self.imgProfilePicture.image = image?图像是否真的存在(不是零)。
  • 我认为问题是当我上传图像时,当我检查存储时,它显示为 0KB
  • 为什么将空数据对象放入 fileData 中?

标签: swift firebase firebase-storage


【解决方案1】:

您应该将let fileData = NSData() 替换为您的图像数据。 NSData() 仅创建 0kb 的空数据对象,因此您应该将图像转换为如下数据:

 var fileData = UIImagePNGRepresentation(image)  // image is UIImage which you get from Picker

or 

 var fileData = UIImageJPEGRepresentation(image, 0.7) 

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多