【发布时间】:2015-07-19 22:43:35
【问题描述】:
我正在为 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) 行会将其打印到我的控制台中:
Optional(Error Domain=NSURLErrorDomain Code=-1002 "操作无法完成。(NSURLErrorDomain error -1002.)" UserInfo=0x61000006ea80 {NSErrorFailingURLStringKey=Optional(https://pbs.twimg.com/profile_images/618168482086129664/C0E92y7G.png), NSUnderlyingError=0x600000243720 "操作无法完成'未完成。(kCFErrorDomainCFNetwork 错误 -1002.)", NSErrorFailingURLKey=Optional(https://pbs.twimg.com/profile_images/618168482086129664/C0E92y7G.png)})
我做错了吗?我已经用谷歌搜索了这个(什么字眼),我发现的几乎每个 SO 页面都有一个解决方案,基本上相当于“您的 URL 缺少 URL 方案/具有不受支持的 URL 方案”,这不是问题我有。
【问题讨论】:
-
嗯,这段代码对我来说很好用(除了好奇地引用
println,它不再在 Swift 2 中使用)。您可能需要仔细检查您的网址,确保没有任何空格或奇怪的不可见字符。 -
很奇怪。我只是手动输入了 URL,以确保我没有复制任何不可见的字符,仍然没有。另外,
println是我编写的一个包装函数,它只是再次调用print,使其在NSWindow子类中工作。 -
实际上,从头开始。我刚刚清除了所有 Xcode 的缓存,现在它可以在手动将 URL 粘贴到代码中时工作。通常,我会从 Twitter 的 API 获取 URL,这就是它停止工作并产生上述错误的时候。什么
-
原来字符串的“Optional()”部分是/实际上/字符串的一部分,而不仅仅是表明对象本身是可选的,因此我收到错误表示 URL 有问题。我以前从未见过这种情况。我认为这实际上是 Xcode 或 Swift 本身的一个错误。
标签: cocoa twitter nsurlsession swift2