Firebaseに複数画像をアップロードしたいです。for-loopを使って実装してみましたがdatabase,storage共に3枚あるimagesArrayのうちの三枚目のみ保存される状態になってしまいます。
どなたか複数画像をアップロードして後に回収したい場合に正しいアップロードの仕方を教えていただけないでしょうか?
よろしくお願いします。
以下が実装したコードです。
func sendTweets() {
let text = textView.text let tweetLength = textView.text.count let imagesNumber = imagesArray.count format.dateFormat = "yyyy-MM-dd HH:mm" let strDate = format.string(from: date as Date) let childRef = ref.child("TWEETS").child(uid!).childByAutoId() let key = ref.child("TWEETS").child(uid!).childByAutoId().key let childStorageRef = storageRef.child("tweetImage").child(uid!).child(key) if(tweetLength>0 && imagesNumber>0) { for image in imagesArray { let tweetImage = image if let uploadData = UIImagePNGRepresentation(tweetImage) { childStorageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in if error != nil { print("error") } else { if let imageUrl = metadata?.downloadURL()?.absoluteString { let values = ["Text": text!, "tweetImageUrl": imageUrl, "Date": strDate] as [String : Any] childRef.updateChildValues(values) } } }) } } dismiss(animated: true, completion: nil) } else if(tweetLength>0) { let values = ["Text": text!, "Date": strDate] as [String : Any] childRef.updateChildValues(values) dismiss(animated: true, completion: nil) } else if(imagesNumber>0) { for image in imagesArray { let tweetImage = image if let uploadData = UIImagePNGRepresentation(tweetImage) { childStorageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in if error != nil { print("error") } else { if let imageUrl = metadata?.downloadURL()?.absoluteString { let values = ["tweetImageUrl": imageUrl, "Date": strDate] as [String : Any] childRef.updateChildValues(values) } } }) } } dismiss(animated: true, completion: nil) } else { alertTheUser(title: "error", message: "enter something.") } }//func
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/09 09:15