gpt4 book ai didi

ios - 如何在 Swift 中为图像使用 URL?

转载 作者:行者123 更新时间:2023-12-01 22:05:58 26 4
gpt4 key购买 nike

我正在尝试从我的 Firebase 数据库(个人资料图片)中检索某些数据。如您所见,这是来自 UITableViewCell。我有一个我想要覆盖的 imageView 的 @IBOutlet。

当 View 唤醒时,您可以看到我经过,并确保我可以获取信息。我知道如何从 Firebase 检索数据,但不知道照片 URL,然后转换为照片本身。

我不确定为什么它不起作用。我收到一个错误,并将在下面显示。有可能是因为 URL 解包的东西,或者好像 Firebase 的格式不正确,不过我认为是这样。

错误信息:Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

import UIKit
import FirebaseAuth
import FirebaseDatabase
import Firebase

class ProfileCellControler: UITableViewCell {

@IBOutlet var name : UILabel!
@IBOutlet var rating : UILabel!
@IBOutlet var imageViewPro : UIImageView!

var databaseRefer : DatabaseReference!
var databaseHandle : DatabaseHandle!

override func awakeFromNib() {
super.awakeFromNib()

var urlString = ""
let urll = URL(string: urlString)!

databaseRefer = Database.database().reference()
let userID = Auth.auth().currentUser!.uid

databaseHandle = databaseRefer.child("Users").child(userID).child("Profile").child("Profile Name").observe(.value, with: { (data) in
print(String((data.value as? String)!))
self.name.text = "\(String((data.value as? String)!))"
print("Done")
})

databaseHandle = databaseRefer.child("Users").child(userID).child("Profile").child("Stars").observe(.value, with: { (data) in
print(String((data.value as? String)!))
if ((String((data.value as? String)!)) == "N/A") {
self.rating.text = "No Rating"
} else {
self.rating.text = "\(String((data.value as? String)!)) ★"
}
print("Done")
})

databaseHandle = databaseRefer.child("Users").child(userID).child("Profile").child("Profile Image").observe(.value, with: { (data) in
print(String((data.value as? String)!))
print("Done \(String((data.value as? String)!))")
urlString = (String((data.value as? String)!))
})

ImageService.downloadImage(withURL: urll) { (image) in
self.imageViewPro.image = image
}

// Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

// Configure the view for the selected state
}

}

Take a look at my code, and use the code here if you don't understand

最佳答案

发现 URL 的字符串为零,因为您正在创建调用以在 urll 之前为您的 URL 下载图像。已使用数据库中的值初始化:

  databaseHandle = databaseRefer.child("Users").child(userID).child("Profile").child("Profile Image").observe(.value, with: { (data) in
print(String((data.value as? String)!))
print("Done \(String((data.value as? String)!))")
urlString = (String((data.value as? String)!))
})
observe(.value, with: )因此是异步操作
ImageService.downloadImage(withURL: urll) { (image) in
self.imageViewPro.image = image
}

observe(.value, with:) 之前被调用已解决。我建议将下载 URL 的回调移动到 .observe(:value, :with) 的完成中。或者使用盛大的中央调度来更好地控制流量。

作为旁注,我强烈推荐 SDWebImage用于处理您的图像下载需求,因为它可以使用默认图像进行配置,以应对图像加载失败等情况。

关于ios - 如何在 Swift 中为图像使用 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59755628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com