私を満足させた回答は見つかりませんでした。イメージをFirebaseストレージにアップロードし、imageUrlをFirebaseデータベースに保存します。方法:画像をアップロードイメージのFirebase Storageへのアップロードを完了し、イメージベースをFirebaseデータベースに保存する方法
var imageUrls = [String]()
func uploadImagesToStorage(imagesArray: [UIImage]) {
for i in imagesArray {
guard let uploadData = UIImageJPEGRepresentation(i, 0.3) else { return }
let fileName = NSUUID().uuidString
FIRStorage.storage().reference().child("post_Images").child(fileName).put(uploadData, metadata: nil) { (metadata, err) in
if let err = err {
return
}
guard let profileImageUrl = metadata?.downloadURL()?.absoluteString else { return }
self.imageUrls.append(profileImageUrl)
}.resume()
} //..End loop
saveToDatabaseWithImageUrl(imageUrls: imageUrls)
はuploadImagesToStorage([UIImage] imagesArray)で動作します。このメソッドは、アップロードしたい画像を含む配列を引数として取得します。画像をアップロードしている間、firebaseが私に与えるメタデータからimageUrl情報をダウンロードして、そのimageUrlをimageUrlsアレイに保存しています。 forループは、すべての単一のイメージのimageUrl情報を保存するために必要です。イメージがアップロードされ、imageUrls ArrayにimageUrl情報が入力されたら、関数func saveToDatabaseWithImageUrl(imageUrls:[String])を呼び出して、imageUrlをデータベースに保存します。 Firebaseの確認画像はFirebaseストレージに保存されますが、imageUrlはFirebaseデータベースに保存されません。私のコードをデバッグしている間、私は、この動作の理由は、画像がアップロードされている間にコードが次の行にジャンプしていることに気付きました。したがって、空のimageUrls配列を持つsaveToDatabaseWithImageUrlsを呼び出します。私は[Documentation] [1]を読んで、.resume()メソッドを使ってアップロードを管理しようとしました。それでもsaveToDatabaseWithImageUrlメソッドにジャンプしました。アップロードが完了し、次のコード行が実行されることを保証する方法がわかりません。ご協力いただきありがとうございます。
お返事ありがとうございます。次のエラーメッセージが表示されました未解決の識別子の使用convertPhotoToPngData –
あなたは自分のコードを参照してください。画像をアップロードすると機能します空のimageUrlをアップロードしてデータベースに保存する際に次のコード行にジャンプするという問題があります –
アップロードを完了するためにどうすればいいですか –