我正在尝试从 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/