2017-07-10 12 views
3

firebaseからデータをロードしようとしています。私は正常にusenameと電子メールのようなデータを読み込みますが、どういうわけかそれは画像を読み込めません。 firebaseのデータを読み込むために使用したコードを添付しています。助けてください。ありがとうございました。Firebaseデータベースswift3からイメージをロードできませんでした

コード:

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

} 
+0

私の回答はあなたの問題の解決に役立ちましたか? –

答えて

0

あなたはFirebaseデータベースからファイルを取得するためにFIRStorage参照を作成する必要があります。

まず:

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

関連する問題