Alamofire打了两次电话

时间:2017-05-09 14:00:41

标签: ios swift alamofire

我试图使用Alamofire,但它真的很奇怪。 我正在调用此功能并进行调试,它被调用两次,我不知道为什么。

第一次它只是跳过所有功能而没有做任何事情,第二次正常运行。

override func viewDidLoad() {
    super.viewDidLoad()

    download{
        //do stuffs
    }

}

func download(completed: @escaping DownloadComplete){

    Alamofire.request("https://httpbin.org/get").responseJSON { response in
        print(response.request ?? "")  // original URL request
        print(response.response ?? "") // HTTP URL response
        print(response.data ?? "")     // server data
        print(response.result)   // result of response serialization

        if let JSON = response.result.value {
            print("JSON: \(JSON)")
        }
        completed()
    }
}

这个ViewController由PerformSegue WithIdentifier调用。我不知道会发生什么。

3 个答案:

答案 0 :(得分:2)

它可能是调试语句本身导致额外请求。例如,如果您执行此类操作以查看请求的外观,那么它实际上会发出请求

let test = session.request(url);

print("Debug print request")
// this will make first call even though response is not handled
debugPrint(test)

// second call
session.request(url).responseJson....

答案 1 :(得分:1)

我假设您在请求行上设置了一个断点。当你这样做时,它会触发两次。第一次发出请求时,第二次收到回复。编译器将完成块视为1行并再次在同一行上触发。

答案 2 :(得分:0)

如果没有重复的旧连接,请检查您的故事板(连接检查器,⌘+⌥+ 6)。