Firebase сохраняет последнее изображение в массиве в хранилище дважды - PullRequest
0 голосов
/ 26 августа 2018

У меня есть приложение, в котором firebase сохраняет группу изображений, которые пользователь взял в хранилище.Проблема, однако, в том, что когда он делает это, он сохраняет последнее изображение в этом массиве 2 раза.

Конечный результат в хранилище выглядит примерно так (Img2 должен произойти только один раз):

UserID / ImgGroup1 / (Img1, Img2, Img2)

Редактировать : Проблема в том, что при изменении storageRef в функции uploadImage , которая не включена в вопрос, с Auth.auth().currentUser?.email на Auth.auth().currentUser?.uidЭто делает это.Но когда у меня там есть электронная почта, это невозможно.Итак, как мне это исправить?

Сильфон - это функция, в которой это происходит:

        //send Posts Function
    func sendPosts() {

        let ref = Database.database().reference()
        let uid = Auth.auth().currentUser?.uid
        let imagesNumber = PhotoArray.sharedInstance.photosArray.count
        let childRef = ref.child("Posts").child(uid!).child("post\(takePicViewController().finalPost + PhotoArray.sharedInstance.numberPost)")

        if(imagesNumber>0)
        {
            for image in PhotoArray.sharedInstance.photosArray {

                let storageRef = Storage.storage().reference().child((Auth.auth().currentUser?.uid)!).child("post\(takePicViewController().finalPost + PhotoArray.sharedInstance.numberPost)").child(imageName)
                let postRef = childRef.child("ImageUrl")
                let autoID = postRef.childByAutoId().key
                let Image = image

                if let uploadData = UIImagePNGRepresentation(Image) {

                    storageRef.putData(uploadData, metadata: nil) { (metadata, err) in

                        if let err = err {
                            print(err)
                        }

                        storageRef.downloadURL(completion: { (url, error) in
                            if error != nil {
                                print(error as Any)
                            } else {
                                guard let imgUrl = url?.absoluteString else { return }

                                let value = [autoID: imgUrl]  as [String : Any]
                                postRef.updateChildValues(value)
                            }
                        })
                    }

                }
            }
        }
//         else if(imagesNumber>0)
//        {
//
//            for image in PhotoArray.sharedInstance.photosArray {
//
//                let storageRef = Storage.storage().reference().child((Auth.auth().currentUser?.uid)!).child("post\(takePicViewController().finalPost + PhotoArray.sharedInstance.numberPost)").child(imageName)
//                let postRef = childRef.child("ImageUrl")
//                let autoID = postRef.childByAutoId().key
//                let Image = image
//
//                if let uploadData = UIImagePNGRepresentation(Image) {
//
//                    storageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in
//                        if error != nil {
//                            print("error")
//                        } else {
//
//                            storageRef.downloadURL { (url, error) in
//
//                                if let error = error {
//                                    // Handle any errors
//                                    let err = error as NSError
//                                    print(err.localizedDescription)
//                                } else {
//                                    guard let imageUrl = url?.absoluteString else { return }
//                                    postRef.child(autoID).setValue(imageUrl)
//                                }
//
//
//                            }
//
//                        }
//
//                    })
//                }
//            }
//        }

    }//func

Где я ошибаюсь?

Спасибо за любую помощь!

...