I found several similar questions on StackOverflow but none of them solve my problem.
I am trying to get a image from a url. Here's how I do it:
let url = NSURL(string: "http://pic3.zhimg.com/8161ba9638273e0fb1a0201789d22d8e_m.jpg")
let data = NSData(contentsOfURL: url!)
let image = UIImage(data: data!)
But I got an error telling me that data
is nil.
How can I solve this? Thanks.
UPDATE
Here's some screenshots of the error:
This is probably a result of Apple's new app transport security denying a non-HTTPS request. To work around this you need to modify your app's Info.plist
file. You can either define an exception for that particular domain
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>pic3.zhimg.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
or disable ATS altogether
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
I think you should, before all, create a resilient code.
if let url = NSURL(string: "http://pic3.zhimg.com/8161ba9638273e0fb1a0201789d22d8e_m.jpg")
{
if let data = NSData(contentsOfURL: url)
{
if let image = UIImage(data: data)
{
//Do something
}
}
}