Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 阿拉莫菲尔打了两次电话_Ios_Swift_Alamofire - Fatal编程技术网

Ios 阿拉莫菲尔打了两次电话

Ios 阿拉莫菲尔打了两次电话,ios,swift,alamofire,Ios,Swift,Alamofire,我试着用阿拉莫菲尔,但它真的很奇怪。 我正在调用这个函数并进行调试,它被调用了两次,我不知道为什么 在第一次它只是跳转所有的函数而不做任何事情,第二次正常运行 override func viewDidLoad() { super.viewDidLoad() download{ //do stuffs } } func download(completed: @escaping DownloadComplete){ Alamofire.re

我试着用阿拉莫菲尔,但它真的很奇怪。 我正在调用这个函数并进行调试,它被调用了两次,我不知道为什么

在第一次它只是跳转所有的函数而不做任何事情,第二次正常运行

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由带标识符的PerformScheue调用。我不知道可能是什么。

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

我假设您正在请求行上放置断点。当你这么做的时候,它会触发两次。第一次发送请求,第二次收到响应。编译器将完成块视为一行,并再次在同一行上触发。

可能是调试语句本身导致了额外的请求。例如,如果您这样做是为了查看请求的外观,那么它将实际发出请求

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....

在这个if:if-let JSON=response.result.value{//call here perform segue print(“JSON:(JSON)”)}内调用perform segue,因为它是异步调用。调用了两次什么函数?由于请求是异步的,因此它将运行
。request
一次,然后在一秒钟后实际运行块的内容。如果可能,将
print
放在代码的不同位置并显示结果。“Alamofire.request”看起来运行了两次。它是否打印了两次?调用
viewDidLoad
方法的次数是否超过两次?尝试将
print(“viewDidLoad”)
直接放在
viewDidLoad
函数的开头。没有重复:/Wow!我想知道更多关于这一点,你能解释一下为什么当你试图打印一些东西时会再次执行请求吗?或者你有我可以深入了解的链接吗?非常感谢。编辑此项解决了我的问题,从代码中删除诸如
print(“invokedURL:\(request.urlRequest?.url?.absoluteString)”)
之类的语句可以减少请求的重复。现在有人给它打过一次电话,但我仍然想知道为什么会这样。