Failed to load image from Firebase database swift3

I am trying to load data from firebase. I am successfully loading data like username and email, but somehow it doesn't load the image. I am attaching my code that I used to load data from firebase. Please help. thank.

code:

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.
}

 }

      

+3


source to share


1 answer


You need to create a link FIRStorage

to fetch files from Firebase database .

Firstly:

import FirebaseStorage

      

The latter take a link to the repository:

var storage: FIRStorage!

      

Then initialize it



storage = FIRStorage.storage()

      

Now:

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)
  })
})

      

In your case, the path is different, so just change the path and Cheers!

Link: from here

0


source







All Articles