image - 无法从 Firebase 数据库 swift3 加载图像

标签 image firebase swift3 firebase-realtime-database

我正在尝试从 firebase 加载数据。我成功加载了用户名和电子邮件等数据,但不知何故无法加载图像。我附上了我用来从 firebase 加载数据的代码。请帮忙。谢谢。

代码:

import UIKit
import FirebaseDatabase
import  Firebase

class ProfileVC: UIViewController {


@IBOutlet weak var currentphoto: UIImageView!

@IBOutlet weak var usernameLabel: UILabel!

@IBOutlet weak var BioOrEmailLabel: UILabel!

var databasereff : DatabaseReference!


override func viewDidLoad() {
    super.viewDidLoad()

    databasereff = Database.database().reference()
    if let userid = Auth.auth().currentUser?.uid
    {
        databasereff.child("users").child(userid).observeSingleEvent(of: .value, with: { (snapshot) in
            let dict = snapshot.value as? [String:Any]
            let username = dict?["username"] as? String
            let email = dict?["email"] as? String
            if let photourl = dict?["profileimageUrl"] as? String
            {
                let url = URL(string: photourl)
                URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
                    if error != nil{
                            print(error?.localizedDescription)
                        return
                    }
                    OperationQueue.main.addOperation  {
                        self.currentphoto.image = UIImage(data: data!)
                    }
                }).resume()
            }
            self.usernameLabel.text = username
            self.BioOrEmailLabel.text = email
        })
        {
            (error) in
            print(error.localizedDescription)
        }
    }

    // Do any additional setup after loading the view.
}

 }

最佳答案

您需要创建 FIRStorage 引用以从 Firebase 数据库 检索文件。

首先:

import FirebaseStorage

其次取一个存储引用:

var storage: FIRStorage!

然后初始化

storage = FIRStorage.storage()

现在:

let dbRef = database.reference().child("myFiles")
dbRef.observeEventType(.ChildAdded, withBlock: { (snapshot) in
  // Get download URL from snapshot
  let downloadURL = snapshot.value() as! String
  // Create a storage reference from the URL
  let storageRef = storage.referenceFromURL(downloadURL)
  // Download the data, assuming a max size of 1MB (you can change this as necessary)
  storageRef.dataWithMaxSize(1 * 1024 * 1024) { (data, error) -> Void in
    // Create a UIImage, add it to the array
    let pic = UIImage(data: data)
    picArray.append(pic)
  })
})

在您的情况下,路径不同,所以只需更改路径并干杯!

引用:from here

关于image - 无法从 Firebase 数据库 swift3 加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45006033/

相关文章:

delphi - 如何获取照片的拍摄日期和时间?

java - 如何预览图像而不将其保存到文件系统?(JSF 2.0)

ios - Swift Firebase - 使用文档 UID 获取当前用户以填充列表

ios - 使用swift 3点击单元格时如何在Avplayer中播放来自url的视频

iphone - 将路由器代码升级到 Alamofire 4.0 和 Swift 3

image - 当我在JavaFx中将鼠标悬停在图像上时如何显示图像的标题

css - 使用CSS将图标放在按钮的右上角

json - observeSingleEvent 不触发

android - Firebase Android 禁止用户

ios - 如何使用 Swift 保持数据源与 firebase 实时数据库同步?