Изображение профиля и кнопка загрузки: FireBase: Swift 4.0: проблема с преобразованием JPEG в данные - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь реализовать изображение профиля в комплекте с кнопкой загрузки в Firebase. Я использую swift 4.0, и я застрял в синтаксисе, который необходим для преобразования изображения JPEG в данные.

Отображается сообщение об ошибке, содержащее исправление для нового кода замены, и следуя инструкциям, другая ошибкаиграл.

@IBAction func uploadButtonWasTapped(_ sender: Any) {
progressView.isHidden = false
let randomID = UUID.init().uuidString
let uploadRef = Storage.storage().reference(withPath:     
"images/(randomID).jpg")


 guard let imageData =    
 imageView.image?.jpegData(compressionQuality: 
 0.75) else { return }


 let uploadMetadata = StorageMetadata.init()
 uploadMetadata.contentType = "image/jpeg"

 let taskReference = uploadRef.putData(imageData, metadata: 
 uploadMetadata) { (downloadMetadata, error) in
   if let error = error {
 print("Oh no! Got and Error! \(error.localizedDescription)")
    return
        }
 print("Put is complete: \(String(describing: downloadMetadata))")
    }

полученная строка:

 'guard let imageData =   
 imageView.image?.jpegData(compressionQuality: 
 0.75) else { return }'

ошибка получена: jpegData (compressQuality :) 'переименовано в
' UIImageJPEGRepresentation (): :) '

код изменен на

   'guard let imageData =  
   imageView.image?.UIImageJPEGRepresentation(compressionQuality: 
   0.75) else { return }

введите описание изображения здесь получена ошибка: значение типа' UIImage 'не имеет члена
'UIImageJPEGRepresentation'

есть идеи?

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Измените свой код на:

guard let imageDate = imageView.image?.jpegData(compressionQuality: 0.75) else
{ 
    return
}

UIImageJPEGRepresentation заменен на jpegData. См. Также ответ в этой теме: https://stackoverflow.com/a/51531204/2399348

Из документации Apple:

Хотя кажется, что он был переименован с Objective-C на Swift, похоже, что это касается только iOS 12.0 и более поздних версий. (См. Ранее упомянутую тему SO). Поскольку вы заявляете, что поддерживаете iOS 13.0 и выше, вам необходимо использовать новый синтаксис.

0 голосов
/ 25 октября 2019

Используйте это так, поскольку ваш синтаксис неверен. Вот почему вы получаете эту ошибку.

guard let imageData = UIImageJPEGRepresentation(imageView.image, 0.75) else { return }
...