Не удается преобразовать значение типа «(_) -> ()» в ожидаемый тип аргумента «CompletionHandler?»используя KingFisher Swift - PullRequest
0 голосов
/ 25 января 2019

Я использую библиотеку KingFisher для загрузки изображений из Интернета. Для справки:

https://github.com/onevcat/Kingfisher

https://cocoapods.org/pods/Kingfisher

imageView.kf.setImage(with: url)

Эта инструкция работает безупречно, но я хотел отследить успех, поэтому я добавил обработчик завершения, поэтому в документации предлагается этот фрагмент.

imageView.kf.setImage(with: userInfo.getImageUrl()){ result in
            switch result {
            case .success(let value):
                print("success")
            case .failure(let error):
                print(error) // The error happens
            }
        }

Для справки я использую шпаргалку:

https://github.com/onevcat/Kingfisher/wiki/Cheat-Sheet

При добавлении этого фрагмента я получаю эту ошибку компиляции:

Не удалось преобразовать значение типа '(_) -> () в ожидаемый тип аргумента' CompletionHandler? ' (aka 'Необязательно <(Необязательно, Необязательно, CacheType, Необязательно) -> ()>')

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Я использую KingFisher 5.1.0, я не сталкивался с такого рода ошибками. Пожалуйста, проверьте ваш подфайл,

стручок 'Зимородок', '~> 5.1.0'

let url  = URL(string: "your image url")!

 self.kf.setImage(with: url) { result in
       switch result {
            case .success(let value):
                print("Image: \(value.image). Got from: \(value.cacheType)")
            case .failure(let error):
                print("Error: \(error)")
            }
        }

https://github.com/onevcat/Kingfisher/wiki/Cheat-Sheet

если вы используете версию pod меньше 5.0, то, конечно, вы получите

Cannot convert value of type '(_) -> ()' to expected argument type 'CompletionHandler?' (aka 'Optional<(Optional, Optional, CacheType, Optional) -> ()>')
0 голосов
/ 25 января 2019

Swift 4.2 Зимородок 5.1

let url = URL(string: "https://example.com/high_resolution_image.png")
let imageView = UIImageView()
imageView.kf.setImage(with: url, placeholder: nil, options: nil, progressBlock: nil) { result in
    print(result)
    switch result {
    case .success(let value):
        print("success")
        print(value.source.url!)
    case .failure(let error):
        print(error) // The error happens
    }
}
...