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

Cannot convert value of type URL.Type to expected argument type 'URL'

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

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

    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 {

看看这一行:

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

您正在尝试使用参数 URL 创建一个 URLRequest。只需传递真正的 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 开始,即使使用该修复程序也无法编译您的代码(闭包中存在签名问题)。不仅如此,NSURLConnection 自 iOS9 以来已被弃用,不鼓励使用。 您应该重构您的代码以与 Swift-native URLSession 及其 dataTask 实例方法一起使用。它的作用几乎相同。