1

I had a code in iOS 8 for loading my images, and it was quite fast.

if let url = NSURL(string: urlString) {
        let request = NSURLRequest(URL: url)
        NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
            (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in
            self.image = UIImage(data: data!)
        }
    }

Then iOS 9 came out and I struggle with this

let session = NSURLSession.sharedSession()
    let urlString = urlString
    let url = NSURL(string: urlString)
    let request = NSURLRequest(URL: url!)
    let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
        self.image = UIImage(data: data!)
    }
    dataTask.resume()

Images are loading very slow.

Eric Aya
  • 69,473
  • 35
  • 181
  • 253
Pan Mluvčí
  • 1,242
  • 2
  • 21
  • 42
  • Possible duplicate of [NSURLSessionDataTask acting suspiciously slow](http://stackoverflow.com/questions/21282229/nsurlsessiondatatask-acting-suspiciously-slow) – Laurentiu L. Oct 09 '15 at 09:46

1 Answers1

1

Inside the dataTaskWithRequest closure, you have to update the image on the main thread. Do it like this:

let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
    dispatch_async(dispatch_get_main_queue()) {
        self.image = UIImage(data: data!)
    }
}
Soberman
  • 2,556
  • 1
  • 19
  • 22