あなたはURL
の間違った初期化子を使用しているかわからない何らかの理由 。これはファイルシステムのURL用であり、ネットワークURL用ではありません。 Data(contentsOf:)
は同期メソッドであり、したがってのみ、インターネットからローカルファイルではなく、ファイルを取得するために使用されなければならないので、
private func fetchImage(){
if let url = URL(string: "https://zgab33vy595fw5zq-zippykid.netdna-ssl.com/wp-content/uploads/2017/09/blog_1280x720.png"), let imageData = try? Data(contentsOf: url){
image = UIImage(data: imageData)
}
}
しかし、あなたは完全にあなたの関数を書き換える必要があります。これは、あなたの関数の作業バージョンです。
func fetchImage(from url:URL, completion: @escaping (UIImage?)->Void){
URLSession.shared.dataTask(with: url, completionHandler: { data, response, error in
guard error == nil, let data = data else {
completion(nil);return
}
completion(UIImage(data: data))
}).resume()
}
fetchImage(from: URL(string: "https://zgab33vy595fw5zq-zippykid.netdna-ssl.com/wp-content/uploads/2017/09/blog_1280x720.png")!, completion: {image in
if let image = image {
//use the image
} else {
//an error occured and the image couldn't be retrieved
}
})
URLRequestの無意味な使用。あなたは単にURLを渡すことができます。 –