UIImageJPEGRepresentation заменен методом экземпляра UIImage.jpegData(compressionQuality:)

Я пытался загрузить фотографию в Firebase, но она выдает мне эту ошибку. Это работало до Xcode 10. Я получаю эту ошибку:

'UIImageJPEGRepresentation' был заменен методом экземпляра 'UIImage.jpegData(compressionQuality:)'

и я не знаю, как использовать эту функцию.

import UIKit
import Firebase

class SignUpViewController:UIViewController {
    @IBOutlet weak var profileImageView: UIImageView!
    @IBOutlet weak var tapToChangeProfileButton: UIButton!

    var continueButton:RoundedWhiteButton!
    var imagePicker:UIImagePickerController!

    override func viewDidLoad() {
        super.viewDidLoad()

          continueButton.addTarget(self, action: #selector(handleSignUp), for: 
          .touchUpInside)
        let imageTap = UITapGestureRecognizer(target: self, action: 
        #selector(openImagePicker))
        profileImageView.isUserInteractionEnabled = true
        profileImageView.addGestureRecognizer(imageTap)
        profileImageView.layer.cornerRadius = profileImageView.bounds.height / 2
        profileImageView.clipsToBounds = true

        imagePicker = UIImagePickerController()
        imagePicker.allowsEditing = true
        imagePicker.sourceType = .photoLibrary
        imagePicker.delegate = self
    }

    func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
        guard let uid = Auth.auth().currentUser?.uid else { return }
        let storageRef = Storage.storage().reference().child("user/\(uid)")

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

        let metaData = StorageMetadata()
        metaData.contentType = "image/jpg"

        storageRef.putData(imageData, metadata: metaData) { metaData, error in
            if error == nil, metaData != nil {
                if let url = metaData?.downloadURL() {
                    completion(url)
                } else {
                    completion(nil)
                }
                // success!
            } else {
                // failed
                completion(nil)
            }
        }
    }
}

person b3f79    schedule 26.07.2018    source источник


Ответы (3)


Ошибка сообщает вам, что в iOS 12 старая функция UIImageJPEGRepresentation была заменена новой jpegData на UIImage.

Изменять:

let imageData = UIImageJPEGRepresentation(image, 0.75)

to:

let imageData = image.jpegData(compressionQuality: 0.75)

Точно так же использование UIImagePNGRepresentation было заменено на pngData().

person rmaddy    schedule 26.07.2018

Просто замените

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

с:

guard let imageData = image.jpegData(compressionQuality: 0.75) else { return }
person stawre    schedule 26.07.2018

Эта ошибка возникала в версии iOS 12 и Swift 4.2.

let image = UIImage()
let imageData = UIImageJPEGRepresentation(image, 1)

to:

let image = UIImage()
let imageData = image.jpegData(compressionQuality: 0.50)

ты хочешь так измениться. Пожалуйста, попробуйте это, это работает для меня.

person Karthick C    schedule 18.12.2018