无法转换类型&#39;(NSURLRequest,HTTPURLResponse?,AnyObject?,NSError?) - &gt;的值虚空&#39;预期参数类型&#39;(DataResponse <any>) - &gt;虚空&#39;

时间:2017-06-18 13:52:53

标签: swift xcode alamofire

我通过codingforentrepreneurs.com研究如何制作iOS应用程序

现在我研究Alamofire。 Xcode是8.3.3

这是错误命令。我不理解错误命令。

  

无法转换类型&#39;的值(NSURLRequest,HTTPURLResponse?,   AnyObject?,NSError?) - &gt;虚空&#39;预期的参数类型   &#39;(DataResponse) - &gt;空隙&#39;

这是ViewController.swift

import UIKit
import Alamofire

    class ViewController: UIViewController {

        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            var rTest = Alamofire.request("http://ec2-52-78-193-10.ap-northeast-2.compute.amazonaws.com", method: .get)
            .responseJSON(completionHandler: isComplete)
        }

        func isComplete(request:NSURLRequest, response: HTTPURLResponse?, data: AnyObject?, error:NSError?) -> Void {
            print(response!.statusCode)
            print(data)
            print(error)
            print(request)

        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }


    }

我不知道什么是问题。 你能救我吗?

2 个答案:

答案 0 :(得分:0)

完成处理程序方法的签名应该是这样的。

func isComplete(response: DataResponse<Any>) {
    let statusCode = response?.response?.statusCode
    let result = response?.result
    let request = response?.request
} 

答案 1 :(得分:0)

在这种情况下,错误正确地描述了问题。

您传入的完成处理程序的类型为(NSURLRequest, HTTPURLResponse?, AnyObject?, NSError?) -> Void,但这不是Alamofire完成处理程序的正确类型。正确的类型是(DataResponse) -> Void

这意味着您需要将isComplete方法更改为:

func isComplete(dataResponse: DataResponse<Any>) -> Void {
    print(dataResponse)
}