Как загрузить массив изображений в Firebase Storage с помощью iOS Swift - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу загрузить массив изображений пользователем Это код, когда я загружаю одно изображение в хранилище Firebase, см. Код: 1. но у меня возникают проблемы при загрузке и массиве изображений. Ссылочный код: 2

Код: 1

func uploadImage(image:UIImage,userId:String,completion:@escaping(_ status:Bool,_ response:String)->Void){
        // if status is true then downloadurl will be in response
        // Data in memory
        guard let data = image.jpegData(compressionQuality: 0.2) else{
            completion(false,"Unable to get data from image")
            return
        }
        // Create a reference to the file you want to upload
        let riversRef = firebaseStorage.reference().child("images/\(userId).jpg")
        // Upload the file to the path "images/rivers.jpg"
        let _ = riversRef.putData(data, metadata: nil) { (metadata, error) in
            guard let _ = metadata else{
                // Uh-oh, an error occurred!
                completion(false,error!.localizedDescription)
                return
            }
            // You can also access to download URL after upload.
            riversRef.downloadURL { (url, error) in
                guard let downloadURL = url else{
                    // Uh-oh, an error occurred!
                    completion(false,error!.localizedDescription)
                    return
                }
                completion(true,downloadURL.absoluteString)
            }
        }
    }

Код: 2

func uploadPostImages(image:[UIImage],userId:String,completion:@escaping(_ status:Bool,_ response:String)->Void){
        let photoDictionary = ["postImages": PostArray.sharedInstance.photosArray as NSArray]
         // Create a reference to the file you want to upload
         let riversRef = firebaseStorage.reference().child("postImages/\(userId).jpg")
         // Upload the file to the path "images/rivers.jpg"
         let _ = riversRef.putData(photoDictionary, metadata: nil) { (metadata, error) in
             guard let _ = metadata else{
                 // Uh-oh, an error occurred!
                 completion(false,error!.localizedDescription)
                 return
             }
             // You can also access to download URL after upload.
             riversRef.downloadURL { (url, error) in
                 guard let downloadURL = url else{
                     // Uh-oh, an error occurred!
                     completion(false,error!.localizedDescription)
                     return
                 }
                 completion(true,downloadURL.absoluteString)
             }
         }
     }

Я получаю это ошибка в коде: 2

Cannot convert value of type '[String : NSArray]' to expected argument type 'Data'

кто-нибудь, кто может мне помочь ??

1 Ответ

0 голосов
/ 12 апреля 2020

Насколько мне известно, что-то вроде этого должно работать. Извините, я не в IDE. Если это не сработает, оставьте комментарий, и я посмотрю поближе.

func uploadImages(
images:[UIImage],
userId:String,
completion:@escaping(_ status:Bool,_ response:String)->Void)
{
        images.enumerated().forEach { (index, image) in 
        guard let data = image.jpegData(compressionQuality: 0.2) else{
            completion(false,"Unable to get data from image")
            return
        }
        // Create a reference to the file you want to upload
        let riversRef = firebaseStorage.reference().child("images/\(userId)\(index).jpg")
        // Upload the file to the path "images/rivers.jpg"
        let _ = riversRef.putData(data, metadata: nil) { (metadata, error) in
            guard let _ = metadata else{
                // Uh-oh, an error occurred!
                completion(false,error!.localizedDescription)
                return
            }
            // You can also access to download URL after upload.
            riversRef.downloadURL { (url, error) in
                guard let downloadURL = url else{
                    // Uh-oh, an error occurred!
                    completion(false,error!.localizedDescription)
                    return
                }
                completion(true,downloadURL.absoluteString)
            }
         }
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...