ошибка цикла для UIImageJPEGRepresentation Swift - PullRequest
0 голосов
/ 15 июня 2019

Я сохраняю изображение на диск из полученного push-уведомления. Сначала я попытался использовать статическую функцию, которую я обычно использую в своем приложении, но я не смог сослаться на нее из NotificationService.swift, который является расширением уведомления.Поэтому я скопировал функцию в файл, чтобы использовать ее, но Xcode застрял в цикле ошибок.Неважно, как я объявляю data, это приведет к ошибке.Если выполнить исправление с ошибкой 'jpegData(compressionQuality:)' has been renamed to 'UIImageJPEGRepresentation(_:_:)', оно выдаст ошибку 'UIImageJPEGRepresentation' has been replaced by instance method 'UIImage.jpegData(compressionQuality:)' Можете ли вы увидеть, что здесь происходит?Это функция:

func saveImage(imageName: String, image: UIImage) {


        guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }

        let fileName = imageName
        let fileURL = documentsDirectory.appendingPathComponent(fileName)
        guard let data = UIImageJPEGRepresentation(image, 1)  else { return }
        guard let data2 = image.jpegData(compressionQuality: 0.75) else {return}
        guard let data3 = image.UIImageJPEGRepresentation(compressionQuality: 1) else {return}
//
        //Checks if file exists, removes it if so.
        if FileManager.default.fileExists(atPath: fileURL.path) {
            do {
                try FileManager.default.removeItem(atPath: fileURL.path)
                print("Removed old image")
            } catch let removeError {
                print("couldn't remove file at path", removeError)
            }

        }

        do {
            try data.write(to: fileURL)
        } catch let error {
            print("error saving file with error", error)
        }

    }

Кроме того, почему я не могу ссылаться на исходную статическую функцию как Functions.saveImage?Большое спасибо как всегда.

Ошибка цикла:

error loop

Ответы [ 2 ]

1 голос
/ 15 июня 2019

Нашел проблему. У меня был NotifiationService, использующий Swift 4.2 и приложение Swift 4.0. Я должен был случайно установить его вчера при проверке .. Еще раз спасибо, ребята, действительно глупая проблема, но эй .. теперь мы будем знать, что такого рода точки ошибки цикла в разных версиях Swift устанавливаются в модулях. Урок выучен здесь .. Ура

0 голосов
/ 15 июня 2019

если вы используете swift 4.2+, попробуйте использовать только

guard let data = image.jpegData(compressionQuality: 0.75) else {
    return
}

в противном случае, если вы используете swift 4.0, попробуйте использовать только

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

не забудьте перекомпилировать код.

...