2022年2月4日金曜日

(Kingfisher) No exact matches in call to instance method 'setImage'

(Kingfisher) No exact matches in call to instance method 'setImage'

概要

Kingfisher が 6 -> 7 にバージョンアップしてみたら setImage の互換性がなくなりタイトルのエラーが出たので対応してみました

環境

  • macOS 11.6.2
  • Xcode 13.2.1
  • Kingfisher 7.1.2 (was 6.3.0)

元のコード

completionHandler の返り値を使ってエラーかどうかの判定などを行う感じでした

imageView.kf.setImage(with: url,
    completionHandler: {
        (image, error, cacheType, imageURL) in
        imageView.image = image
})

修正後のコード

completionHandler の帰り値は result のみになっておりこの結果を元に更に成功 or 失敗で分岐させて処理を書くような感じになっています

これまで使っていた image は value.image という感じで参照することができます

imageView.kf.setImage(with: url,
    completionHandler: {
        result in
    switch result {
    case .success(let value):
        imageView.image = value.image
    case .failure(_):
        print("failure")
    }
})

最後に

外部のライブラリを使っているとバージョンアップの際に非互換が発生することがあるのでこういった対応はどうしてもやらないといけなくなります

参考サイト

0 件のコメント:

コメントを投稿