2017-04-03 15 views
1

URLから画像を読み込みたいですか?SWIFT:URLで画像をダウンロードできませんか?

My機能:

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { 
    if "bigImage" == message.name { 
     print(message.body as? String ?? "nothing") 
     let urlString = message.body as! String 
     print(urlString) 
     imageView.downloadedFrom(link: urlString) 
    } 
    if imageView != nil{ 
    } 
} 

私がエラーを得た:でも私は非nilのメッセージを受け取ることができます

オプションの値をアンラップながらimageView.downloadedFrom(link: urlString)

が予期せずnilを発見しました。体。

私はATSをオンにしました。本当に何が起こったのか知りたいです。

func getDataFromUrl(url: URL, completion: @escaping (_ data: Data?, _ response: URLResponse?, _ error: Error?) -> Void) { 
    URLSession.shared.dataTask(with: url) { 
     (data, response, error) in 
     completion(data, response, error) 
     }.resume() 
} 

func downloadImage(url: URL) { 
    print("Download Started") 
    getDataFromUrl(url: url) { (data, response, error) in 
     guard let data = data, error == nil else { return } 
     print(response?.suggestedFilename ?? url.lastPathComponent) 
     print("Download Finished") 
     DispatchQueue.main.async() {() -> Void in 
      self.imageView.image = UIImage(data: data) 
     } 
    } 
} 

extension UIImageView { 
func downloadedFrom(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit) { 
    contentMode = mode 
    URLSession.shared.dataTask(with: url) { (data, response, error) in 
     guard 
      let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200, 
      let mimeType = response?.mimeType, mimeType.hasPrefix("image"), 
      let data = data, error == nil, 
      let image = UIImage(data: data) 
      else { return } 
     DispatchQueue.main.async() {() -> Void in 
      self.image = image 
     } 
     }.resume() 
} 
func downloadedFrom(link: String, contentMode mode: UIViewContentMode = .scaleAspectFit) { 
    guard let url = URL(string: link) else { return } 
    downloadedFrom(url: url, contentMode: mode) 
} 

}

答えて

0

私はUIImageViewに画像をロードするために、画像ローダーを使用するreccomand。使用KFSwiftImageLoader

let imageView : UIImageView! 
imageView.loadImage(urlString: imageURL) 
関連する問題