【Swift】UIImageViewにURLの画像を表示する(2) - Swift・iOSの実装時に出たエラーとその解決方法についてメモ。ただのケアレスミスなのですが、一応記録に残します。
■開発環境
・Xcode 10.1
・Swift 4.2.1
■エラーが出た時のコード
このコード一目見て普通にエラー箇所に気付くかと思いますが、、なぜ気づかなかったのか謎です笑
import UIKit class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() let url = (string: "{画像URL}") let task = URLSession.shared.dataTask(with: url) { data, responds, error in if let error = error { print(error.localizedDescription) return } guard let data = data, let response = responds as? HTTPURLResponse else { return } if response.statusCode == 200 { print(data) } else { print("サーバエラー") } } task.resume() } }
■エラーメッセージ
Ambiguous reference to member 'dataTask(with:completionHandler:)'
訳:「'dataTask(with:completionHandler :)'へのあいまいな参照」
■なにがあいまい?
エラー発生箇所の「dataTask(with:completionHandler :)」のドキュメント確認
・dataTask(with:completionHandler:) - URLSession | Apple Developer Documentation
↓
Declaration欄
func dataTask(with request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask
第一引数がURLRequest型。型は合っているか?
↓
該当のコードの第一引数
let url = (string: "{画像URL}") let task = URLSession.shared.dataTask(with: url) { data, responds, error in
↓
!?
let url = (string: "{画像URL}")
URLRequest型になっていない笑
あいまいもなにも・・・笑
■修正
画像URLをURLRequest型にすればエラー解消されます。
let url = URL(string: "{画像URL}")
■関連リンク
・dataTask(with:completionHandler:) - URLSession | Apple Developer Documentation