NSData contentsOfUrl返回nil

我在StackOverflow上发现了几个类似的问题,但是没有一个解决我的问题。

我正在尝试从url获取图片。 以下是我如何做到这一点:

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

但是我得到一个错误,告诉我data是零。

我该如何解决这个问题? 谢谢。

UPDATE

以下是错误的一些截图:

在这里输入图像说明 在这里输入图像说明

这可能是苹果新的应用程序传输安全拒绝非HTTPS请求的结果。 要解决这个问题,你需要修改你的应用的Info.plist文件。 您可以为该特定域定义一个例外

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

或完全禁用ATS

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

我认为你应该首先创build一个有弹性的代码。

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