NSData contentsOfUrl devuelve nil

Encontré varias preguntas similares en StackOverflow, pero ninguna solucionó mi problema.

Estoy tratando de get una image de una url. Así es como lo hago:

let url = NSURL(string: "http://pic3.zhimg.com/8161ba9638273e0fb1a0201789d22d8e_m.jpg") let data = NSData(contentsOfURL: url!) let image = UIImage(data: data!) 

Pero recibí un error que me decía que los data son nulos.

¿Como puedo resolver esto? Gracias.

ACTUALIZAR

Aquí hay algunas capturas de pantalla del error:

introduzca la descripción de la imagen aquí introduzca la descripción de la imagen aquí

Probablemente esto sea el resultado de la nueva security de transporte de aplicaciones de Apple que deniega una request que no sea HTTPS. Para evitar esto, debes modificar el file Info.plist tu aplicación. Puede definir una exception para ese dominio particular.

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

o deshabilitar ATS por completo

 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 

Creo que deberías, antes de todo, crear un código resistente.

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