2017-04-03 4 views
1

Ich möchte ein Bild von einer URL laden.SWIFT: Kann ich ein Bild mit einer URL nicht herunterladen?

Meine Funktion:

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{ 
    } 
} 

Ich habe einen Fehler bei: imageView.downloadedFrom(link: urlString)

unerwartet null gefunden, während ein optionaler Wert Abwickeln

selbst kann ich nicht-Null-Nachricht empfangen. Karosserie.

Ich habe ATS übrigens eingeschaltet .. möchte wirklich wissen, was passiert ist.

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) 
} 

}

Antwort

0

I reccomand Bild Loader verwenden Bild in UIImageView zu laden. Verwenden Sie KFSwiftImageLoader

let imageView : UIImageView! 
imageView.loadImage(urlString: imageURL) 
Verwandte Themen