簡體   English   中英

如何在 Swift 中調用異步任務?

[英]How to call Async task in Swift?

我是 Swift 的新手,因此問題是,我試圖將 http 調用包裝到一個函數中以供重用,但是由於它需要一個完成塊,我不確定如何調用它。 這是我的代碼,

func httpPost(_ path: String, _ parameters: [String: Any], completion:@escaping(_ ret:Any?,_ err:Error?) -> Void){

        let headers = [
            "Content-Type": "application/json",
            "cache-control": "no-cache"
        ]

        let postData = try? JSONSerialization.data(withJSONObject: parameters, options: [])

        var request = URLRequest(url: URL(string: path)! as URL,
                                 cachePolicy: .useProtocolCachePolicy,
                                 timeoutInterval: 10.0)
        request.httpMethod = "POST"
        request.allHTTPHeaderFields = headers
        request.httpBody = postData

        let session = URLSession.shared
        let dataTask = session.dataTask(with: request) { (data, response, error) -> Void in
            guard let data = data else {
                completion(nil,error)
                return
            }
            do{
                try self.validate(response)
                let json = try JSONSerialization.jsonObject(with: data, options: [])
                completion(json,nil)

            }catch{
                print(error)
                completion(nil,error)
            }

        }

        dataTask.resume()
    }

我的問題是如何調用這個函數?

我會假設 Xcode 本身會建議應該如何實現調用這個方法。 如果您嘗試輸入“httpPo...”,您應該會看到自動完成列表:

在此處輸入圖片說明

雙擊它:

在此處輸入圖片說明

我認為pathparameters很容易理解,它的問題可能與completion關閉有關; 您可以做的是雙擊它,因此:

在此處輸入圖片說明

僅此而已! 您現在要做的就是填寫它:

httpPost("your path", [: ]) { (response, error) in
    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM