【发布时间】:2019-06-07 08:34:18
【问题描述】:
我正在尝试将图像 url 从 Firebase 存储上传到实时数据库。
这是代码
@IBOutlet weak var jobTitle: UITextField!
@IBOutlet weak var companyName: UITextField!
@IBOutlet weak var jobLocation: UITextField!
@IBOutlet weak var ImageView1stPoster: UIImageView!
var imageUploaded = Data()
var URLtoRealtime = ""
func addPost() {
ref.child("Poster").childByAutoId().setValue(["jobName": jobTitle.text as Any,
"companyTitle": companyName.text as Any,
"jobLocation": jobLocation.text as Any,
"firstPoster": URLtoRealtime as Any,
/*,
"timeStamp":[".sv":"timestamp"]*/]
as[String:Any])
}
// DoneButton to submit everthing :)
@IBAction func DoneButton(_ sender: Any) {
uploadImageToFirebase(imageData: imageUploaded)
createAlert(title: "Post has been submitted", message: "Going to home page")
addPost()
}
func uploadImageToFirebase(imageData: Data) {
// References and vars
let StorageRefrenece = Storage.storage().reference()
let currentUser = Auth.auth().currentUser
let posterImageRef = StorageRefrenece.child("posters").child(currentUser!.uid).child("posterOne.jpg")
let uploadMetaData = StorageMetadata()
uploadMetaData.contentType = "image/jpeg"
// putData to put data to the server using MetaData to orignize everthing.
posterImageRef.putData(imageData, metadata: uploadMetaData) { (uploadedImageMeta, error) in
if error != nil {
print("Error Took place \(String(describing: error?.localizedDescription))")
return
} else {
print("metaData of uploaded image \(uploadMetaData)")
}
}
posterImageRef.downloadURL { (url, error) in
if (error != nil) {
// Handle any errors
print(error!.localizedDescription)
print("NOOOPPPEEE")
} else {
// Get the download URL for 'images/stars.jpg'
print("Working Good")
let UrlString = url!.absoluteString
print(UrlString)
self.URLtoRealtime = UrlString
}
}
}
我正在尝试制作 URLString = URLtoRealtime 数据,然后 将帖子添加到 Firebase。 但发生的是它之前执行 addPost() 函数 self.URLtoRealtime = UrlString
我不知道如何让程序在addpost()函数之前执行上一行代码。
【问题讨论】:
-
之所以会这样,是因为 firebase 调用是异步的。有和你类似的问题和答案,你需要有一个回调,从你的uploadImageToFirebase方法中转义闭包,然后在闭包内调用addPost方法。检查这个:stackoverflow.com/questions/44251463/…
标签: swift firebase firebase-realtime-database firebase-storage