NSURLSessionDataTask在简单的HTTPS URL上失败,错误为-1002

时间:2015-07-19 22:43:35

标签: cocoa twitter nsurlsession swift2

我正在为OS X编写一个简单的Twitter应用程序,我目前仍在下载用户的个人资料图片。这是负责下载图像的代码:

let imageRequest: NSURLRequest = NSURLRequest(URL: NSURL(string: avatarURL)!)
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
let dataTask = session.dataTaskWithRequest(imageRequest) {
    (data, response, error) in

    println(error)

    if data != nil {
        println("Got image")
        let image = NSImage(data: data!)
        completion(image)
    } else {
        println("Data is nil")
        completion(nil)
    }
}
dataTask!.resume()

avatarURL是一个包含此字符串的字符串:https://pbs.twimg.com/profile_images/618168482086129664/C0E92y7G.png,这是我的Twitter头像的URL。正如您所看到的,它是一个完全有效的URL,可以生成完美有效的图像。

但每当我运行我的应用程序时,println(error)行会将其打印到我的控制台中:

  

可选(错误域= NSURLErrorDomain代码= -1002"操作无法完成。(NSURLErrorDomain错误-1002。)" UserInfo = 0x61000006ea80 {NSErrorFailingURLStringKey =可选(https://pbs.twimg.com/profile_images/618168482086129664/C0E92y7G.png) ,NSUnderlyingError = 0x600000243720"操作无法完成。(kCFErrorDomainCFNetwork错误-1002。)",NSErrorFailingURLKey =可选(https://pbs.twimg.com/profile_images/618168482086129664/C0E92y7G.png)})

我做错了吗?我已经用谷歌搜索了这一点,而且我发现的几乎每一个SO页面都有一个基本上等于"你的URL缺少URL方案/有不支持的URL方案的解决方案" #34;,这不是我遇到的问题。

1 个答案:

答案 0 :(得分:1)

我终于想出了如何解决这个问题。之前,我只是懒得这样做:

var avatarURLString = String(responseObject["profile_image_url_https"])

显然会返回一个无法用感叹号打开的Optional。是的,我也不知道。这就是发生的事情。

现在,我这样做:

var avatarURLString = responseObject["profile_image_url_https"] as! String

...实际上产生了一个合适的String对象而不是一些奇怪的不完全可选。 Hooray使用beta版本的编程语言。