我知道如何使用swift进行常规API调用。我无法理解的是如何在需要之前重复API调用。
我想每隔一秒调用一次API
API Call Code Snippet:
let url = URL(string: "https://api.darksky.net/forecast/34eaef38915078ea03c22bb9063bd7ea/37.8267,-122.4233")
let request = URLRequest(url: url!, cachePolicy: URLRequest.CachePolicy.reloadIgnoringCacheData, timeoutInterval: 10)
let session = URLSession(configuration: URLSessionConfiguration.default, delegate: nil, delegateQueue: OperationQueue.main)
let task: URLSessionDataTask = session.dataTask(with: request, completionHandler: { (data: Data?, response: URLResponse?, error: Error?) in
if let error = error {
print(error)
} else if let data = data,
let dataDictionary = try! JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary {
print("API Data:")
print(dataDictionary)
}
})
task.resume()
注意:这不是我将要调用的实际API
答案 0 :(得分:2)
理想情况下,对于您提到的财务解决方案等软件解决方案,服务器必须支持某种Long Polling / websockets机制,一旦建立连接,只要有更新,服务器就会向客户端提供新值(参见:{{3} })
如果服务器不支持:(不是理想的解决方案): 你可以在这里实际使用递归。在响应(成功和失败)请求再次调用相同的函数。这样你就可以继续进行民意调查。
请记住保持请求计时器短(5或10秒而不是60秒),这样如果遇到网络问题,您可以快速拨打下一个电话。