我应该如何处理for-loop中的异步HTTP调用?
我正在使用Alamofire的SessionManager,因为我需要在循环迭代期间维护会话。因此,我认为我不能使用共享会话管理器SessionManager.default
。
但是,如果我每次都要创建一个新的SessionManager,我的请求将被取消finished with error - code: -999
。我想到的假设是因为SessionManager从内存中释放,因此它被取消了。
我该如何处理?我觉得做同步调用会更好。但是没有简单的方法可以与Alamofire进行同步HTTP调用。我不介意使用不同的图书馆。
其他一些信息:
NSAllowsArbitraryLoads
在info.plist中设置为true。控制器类
class CheckinController {
private let sessionManager = SessionManager(configuration: URLSessionConfiguration.default)
// status is an enum such as .connectionFailed and .success
func checkin(id: String, password: String, completion: ( (status) -> Void)) {
self.login(id, password, completion: { (status) in
self.sessionManager.request(…).responseString(completionHandler: { (response) in
// Check for response, then calls completion
completion(status)
})
})
}
func login(id: String, password: String, completion: ( (status) -> Void)) {
let params = [“id” : id, “pass”, password]
self.sessionManager.request(LOGINURL, method: .post, parameters: params).responseString(completionHandler: { (response) in
// Check for response, and then calls completion.
…
completion(someStatus)
})
}
}
用法:
for 0..x {
CheckinController().checkin("someId", "somePassword", completion: { status in
print(status)
)}
}