我正在为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;,这不是我遇到的问题。
答案 0 :(得分:1)
我终于想出了如何解决这个问题。之前,我只是懒得这样做:
var avatarURLString = String(responseObject["profile_image_url_https"])
显然会返回一个无法用感叹号打开的Optional。是的,我也不知道。这就是发生的事情。
现在,我这样做:
var avatarURLString = responseObject["profile_image_url_https"] as! String
...实际上产生了一个合适的String对象而不是一些奇怪的不完全可选。 Hooray使用beta版本的编程语言。