无法将URL.Type类型的值转换为预期的参数类型“URL”

时间:2017-10-17 12:15:23

标签: swift server nsurlconnection

我不明白这里出了什么问题,

//现在实际将请求发送到服务器。

    NSURLConnection.sendAsynchronousRequest(request as? URLRequest ?? URLRequest(url: URL), queue: OperationQueue.main, completionHandler: {(_ response: URLResponse, _ data: Data, _ connectionError: Error?) -> Void in
        var resultText: String? = nil
        if connectionError != nil {
            resultText = "** ERROR = \(connectionError)"
            print("**Error  \(unsuccessLabel.text)")
            uploadPleaseWaitLabel.hidden = true
            //****** 12-17
            unsuccessLabel.hidden = false
            //****** 12-17
            sessionUploadedYorN = "N"
            self.useDocument()
        }
        else {

1 个答案:

答案 0 :(得分:0)

看看这一行:

request as? URLRequest ?? URLRequest(url: URL)

您正在尝试使用参数URLRequest创建URL。只需传递真实的URL实例,而不是类型URL

可能的解决方案:

let actualRequest = request as? URLRequest ?? URLRequest(url: URL(string:"http://www.google.com")!)
NSURLConnection.sendAsynchronousRequest(actualRequest,
                                        queue: OperationQueue.main,
                                        completionHandler:
    { (_ response: URLResponse, _ data: Data, _ connectionError: Error?) -> Void in
        var resultText: String? = nil
        if connectionError != nil {
            resultText = "** ERROR = \(connectionError)"
            print("**Error  \(unsuccessLabel.text)")
            uploadPleaseWaitLabel.hidden = true
            //****** 12-17
            unsuccessLabel.hidden = false
            //****** 12-17
            sessionUploadedYorN = "N"
            self.useDocument()
    }

<强>更新

从Swift4开始,即使使用该修复程序,您的代码也无法编译(在闭包中存在签名问题)。除此之外,{iOS}自iOS9以来已被弃用,不鼓励使用。NSURLConnection。 您应该重构代码以与Swift-native URLSession及其dataTask实例方法一起使用。它几乎一样。