API 中的完成处理程序永远不会运行

时间:2021-02-05 15:48:18

标签: arrays swift api

我有一个 APICall,如下所示

static func getLinkToken() {
        // Prepare URL
        let url = URL(string: "https://sandbox.plaid.com/link/token/create")
        guard let requestUrl = url else { fatalError() }
        // Prepare URL Request Object
        var request = URLRequest(url: requestUrl)
        request.httpMethod = "POST"
  
        let prePostString : [String : Any] = [
            "client_id" : clientID,
            "secret" : secret,
            "user" : ["client_user_id": uniqueID],
            "client_name": "Plaid App",
            "products": ["transactions"],
            "country_codes": ["US"],
            "language": "en",
            "account_filters": [
                 "depository": [
                     "account_subtypes": ["checking"]
                 ]
             ]
        ]

        let postString = try? JSONSerialization.data(withJSONObject: prePostString)
        
        
        // Set HTTP Request Body
        request.httpBody = postString;
        
        
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        
        // Perform HTTP Request
        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
                
                // Check for Error
                if let error = error {
                    print("Error took place \(error)")
                    return
                }
         
            do {
                //Parse response into a dict
                let parsedData = try JSONSerialization.jsonObject(with: data!) as! [String:Any]
                
                //Add link token to user class
                User.linkToken = (parsedData["link_token"] as! String)
                
            } catch let error as NSError {
                print(error)
              }
            
                // Convert HTTP Response Data to a String
                if let data = data, let dataString = String(data: data, encoding: .utf8) {
                    print("Response data string:\n \(dataString)")
                    
                   
                    
                }
        }
        task.resume()
        
    }

出于某种原因,除非它在 ​​@main.init 中,否则如果我调用它,则此代码永远不会起作用。 看来,当我在 main 的初始化程序之外的任何类/方法中调用该函数时,完成处理程序永远不会运行。我如何称呼它的示例如下所示。

class Practice {

     func getAPI() {

         getLinkToken()

    }

}

TLDR; API 调用中的完成处理程序永远不会运行。

谢谢

0 个答案:

没有答案