我对iOS/Swift开发比较新,并且正在开发一个向REST API发送多个请求的应用程序。以下是其中一个调用的示例,用于检索“消息”:
func getMessages() {
let endpoint = "/api/outgoingMessages"
let parameters: [String: Any] = [
"limit" : 100,
"sortOrder" : "ASC"
]
guard let url = createURLWithComponents(endpoint: endpoint, parameters: parameters) else {
print("Failed to create URL!")
return
}
do {
var request = try URLRequest(url: url, method: .get)
let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in
if let error = error {
print("Request failed with error: \(error)")
// TODO: retry failed request
} else if let data = data, let response = response as? HTTPURLResponse {
if response.statusCode == 200 {
// process data here
} else {
// TODO: retry failed request
}
}
}
task.resume()
} catch {
print("Failed to construct URL: \(error)")
}
}
当然,由于各种不同的原因(服务器无法访问,请求超时,服务器返回除了200之外的其他内容等),这个请求有可能失败。如果我的请求失败了,我希望能够重新尝试,并且在下一次尝试之前进行延迟处理。虽然我在苹果的文档中没有看到关于这种情况的指导,但我在SO上找到了几个相关的讨论。不幸的是,这些讨论都是几年前的,而且使用的是我从未接触过的Objective-C。在Swift中,是否存在常见的模式或实现方式来执行此类操作?
applicationDidBecomeActive
中添加一些内容)。 - TNguyen