NSData contentsOfUrl返回nil

时间:2015-09-14 14:45:14

标签: ios swift uiimage nsdata

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

我正在尝试从网址获取图片。以下是我的表现方式:

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

但是我告诉我data是零的错误。

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

更新

以下是错误的屏幕截图:

enter image description here enter image description here

2 个答案:

答案 0 :(得分:15)

这可能是Apple的新应用传输安全性拒绝非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>

答案 1 :(得分:3)

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

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