首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“NSError”不能转换为“NSError?”

“NSError”不能转换为“NSError?”
EN

Stack Overflow用户
提问于 2015-04-10 05:18:29
回答 1查看 835关注 0票数 2

我刚刚升级到Xcode 6.3和SWIFT1.2,并且正在更新语法。在我的项目中,我使用TCBlobDownloadSwift执行一些常规的下载任务。更新后,从框架中的以下方法得到一个编译器错误"'NSError‘不可转换为’NSError?‘“:

代码语言:javascript
复制
func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError sessionError: NSError?) {
        let download = self.downloads[task.taskIdentifier]!
        var error: NSError? = sessionError ?? download.error

        // Handle possible HTTP errors
        if let response = task.response as? NSHTTPURLResponse {
            // NSURLErrorDomain errors are not supposed to be reported by this delegate
            // according to https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/NSURLSessionConcepts/NSURLSessionConcepts.html
            // so let's ignore them as they sometimes appear there for now. (But WTF?)
            if !validateResponse(response) && (error == nil || error!.domain == NSURLErrorDomain) {
                error = NSError(domain: kTCBlobDownloadErrorDomain,
                                  code: TCBlobDownloadError.TCBlobDownloadHTTPError.rawValue,
                              userInfo: [kTCBlobDownloadErrorDescriptionKey: "Erroneous HTTP status code: \(response.statusCode)",
                                         kTCBlobDownloadErrorFailingURLKey: task.originalRequest.URL,
                                         kTCBlobDownloadErrorHTTPStatusKey: response.statusCode])
            }
        }

        // Remove reference to the download
        self.downloads.removeValueForKey(task.taskIdentifier)

        dispatch_async(dispatch_get_main_queue()) {
            download.delegate?.download(download, didFinishWithError: error, atLocation: download.resultingURL)
            return
        }
    }
}

不知何故,我不能将NSError(用initWithDomain:code:userInfo初始化)分配给error(NSError?)更多。Swift 1.2中发生了什么变化?我该怎么解决这个问题?

在网络相关函数中返回NSError?似乎是正常的,特别是在使用objC库的情况下。我现在对错误的最佳方式感到困惑,我是使用NSErrorNSError?还是NSErrorPointer

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-14 02:25:49

所以我修复了这个问题,结果发现给一个NSError分配一个可选的值并没有什么问题。我传递给NSError的init方法的NSError字典从NSURLSessionTaskOriginalRequest (即NSURLRequest )获取一个URL。这个属性现在被更改为NSURL?。我更改为task.originalRequest.URL!,它工作了。

我想我将继续使用NSError?来传递错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29553930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档