I was trying to download a picture to my app from
The request failed with the error NSURLErrorDomain and the code is really -1100. The url should be correct since I checked it in the browser. Anyone knows why?
let userImageURL: String! = "http://i.imgur.com/QhCzQoR.jpg";
let url = NSURL(fileURLWithPath: userImageURL);
let request:NSURLRequest = NSURLRequest(URL: url!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: { (response:NSURLResponse!, imageData:NSData!, error:NSError!) -> Void in
let image = UIImage(data: imageData!);
})
The reason you are getting this problem is because you have used
Instead you should use:
I code in Objective-C, it should be easy to convert it in Swift (small modification in fact, but the explanation is not that much related to code). If you check the error complete message, you'll get:
Clearly, if you look carefully at the URL, you have
file:///http:/i.imgur.com/QhCzQoR.jpg
, which is not the URL wanted. If you logurl.absoluteString
, you'll see it to your URL, it's you that set it like this.Why? Because you used
fileURLWithPath:
instead ofURLWithString:
. So change your line with:Some discussions about the differences between theses two: What is difference between URLWithString and fileURLWithPath of NSURL? or the doc.
Update: In Swift 4:
We also recommend from Swift3+ to avoid NSStuff when there is Swift Equivalent:
NSURL
=>URL
.