无法在 Swift 中使用来自 Firebase 的数据立即加载 UIImageView 和 UILabel
Posted
技术标签:
【中文标题】无法在 Swift 中使用来自 Firebase 的数据立即加载 UIImageView 和 UILabel【英文标题】:Unable to load the UIImageView and UILabel immediately with the data from Firebase in Swift 【发布时间】:2020-03-07 17:32:22 【问题描述】:我有一个名为 ProfileViewController 的视图控制器,它包含一个用于显示用户头像的 UIImageView 和一个用于显示用户名的 UILabel。但是,显示头像和用户名需要一段时间。如果我转到其他视图控制器并再次重新打开它,它实际上可以立即显示它们。另外,我尝试打印出用户名和头像 url,我也可以立即从 Firebase 接收值。
代码如下:
func setUp()
//load avatar and other informations
databaseRef.child("profiles").child(Auth.auth().currentUser!.uid).child("information").observeSingleEvent(of: .value, with: (snapshot) in
let value = snapshot.value as? NSDictionary
self.username.text = value?["username"] as? String
if let avatarURL = value?["avatar"] as? String
if let url = URL(string: avatarURL)
let task = URLSession.shared.dataTask(with: url)
(data, response, error) in
if let data = data
DispatchQueue.main.async
self.avatar.image = UIImage(data: data)
task.resume()
)
【问题讨论】:
代码没有问题。 1.使用不同的图像和质量以便于加载。例如,缩略图的尺寸和质量较小。 2.实现图片缓存,下次下载不用担心。 【参考方案1】:没有办法对此进行优化,因为您已经嵌套了所需的异步调用,您可以更改的是使用SDWebImage 来缓存图像以供即将访问该 vc
【讨论】:
以上是关于无法在 Swift 中使用来自 Firebase 的数据立即加载 UIImageView 和 UILabel的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 Swift 中没有收到来自 Firebase 的推送通知?
Firebase + Swift:无法删除 tableView 中的行
想要使用 Swift 3.0 发送自定义电子邮件,即来自 firebase 的欢迎邮件