![](/img/trans.png)
[英]Image loading sideways upon downloading via URL from Firebase on Swift
[英]Downloading Image, then Cache it from Firebase Swift 3
我目前正在嘗試設置用戶個人資料圖片。 我讓用戶拍攝上載到Firebase的圖像,但是我想下載該圖像並將其緩存。 我現在無法下載它,在解決該問題之后,我將擔心對其進行緩存。
// Uploading Images to Firebase
func uploadImageToFirebaseStorage(data: NSData ) {
let storageRef = FIRStorage.storage().reference(withPath: "myPics/profilePic.jpg")
let uploadMetaData = FIRStorageMetadata()
uploadMetaData.contentType = "image/jpeg"
let uploadTask = storageRef.put(data as Data, metadata: uploadMetaData) { (metadata, error) in
if (error != nil) {
print("I Received an error \(error?.localizedDescription)")
} else {
print("Upload Complete! Here is the MetaData \(metadata?.downloadURL())")
}
}
現在,我在問題導航器中遇到了什么問題:
在reference = self.storage
上存在此問題。 先感謝您!
//Download Image for User Profile Picture
func downloadImageUserFromFirebase() {
let storage = FIRStorage.storage()
var reference: FIRStorageReference!
reference = self.storage.referenceForURL("gs:URL.appspot.com")
reference.downloadURL { (url, error) in
let data = NSData(contentsOf: url!)
let image = UIImage(data: data! as Data)
self.profileImageView.image = image
}
}
存儲未聲明為類的屬性,而是在該方法中聲明的。 此外,即使已將其聲明為類的屬性,也可以迅速將自己置於類屬性之前,除非您處於閉包內。
要么做:
func downloadImageUserFromFirebase() {
let storage = FIRStorage.storage()
var reference: FIRStorageReference!
//all I did here was remove self before storage
reference = storage.referenceForURL("gs:URL.appspot.com")
reference.downloadURL { (url, error) in
let data = NSData(contentsOf: url!)
let image = UIImage(data: data! as Data)
self.profileImageView.image = image
}
}
或者,理想情況下,重組代碼:
class ProfileViewController: UIViewController {
//here we are initializing it as a property of the class
let storage = FIRStorage.storage()
func downloadImageUserFromFirebase() {
var reference: FIRStorageReference = storage.referenceForURL("gs:URL.appspot.com")
reference.downloadURL { (url, error) in
//using a guard statement to unwrap the url and check for error
guard let imageURL = url, error == nil {
//handle error here if returned url is bad or there is error
return
}
guard let data = NSData(contentsOf: imageURL) else {
//same thing here, handle failed data download
return
}
let image = UIImage(data: data)
self.profileImageView.image = image
}
}
}
reference.downloadurl將識別當前用戶的圖像,否則我們應該將profileimageurl保存在數據庫中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.