如何解决如果在Swift中失败,如何在完成过程中对API执行多次调用并退出?
我对Swift还是比较陌生,希望您能帮助我。 如果服务的响应告诉我有更多信息,则需要对服务执行多次调用。 如果没有更多信息,请退出循环并将结果的数组传递给成功完成。如果服务失败,请结束此循环并将错误传递给完成。
这是我正在编写的代码,但不知何故。
func requestAccountDetail(_ accountId: String) {
APIDataManager.requestAccountDetail(accountId,completion: { result in
switch result {
case .success(let response):
self.retrieveSucceed(with: response)
case .failure(let error):
self.retrieveFailed(with: error)
}
})
}
这是我要讲的逻辑
func requestAccountDetail(_ accountId: String,completion: @escaping (GetAccountDetailResult) -> Void) {
var moreinformationIsAvailable: Bool = false
var pageId: Int = 1
let pageIdIncrement: Int = 1
var responses: [ResponseModel] = []
var exitEarly: Bool = false
var serviceError: Error = Error()
repeat {
let inputParams: InputParams = generateInputParameters(accountId,pageId)
let service: Service =
service.AccountDetail(inputParams)
let client: apiclient = apiclient(apiConfiguration: APIDefaultServices())
client.perform(service: service,completion: { (response: AccountDetailResponse) in
switch response {
case .success(let response):
responses.append(response)
moreinformationIsAvailable = response.moreinformationFlag
if moreinformationIsAvailable {
pageId += pageIdIncrement
}
case .failure(let error):
exitEarly = true
serviceError = error
}
})
if exitEarly { break }
} while moreinformationIsAvailable
if exitEarly {
completion(.failure(error))
} else {
completion(.success(responses))
}
}
很抱歉,如果这段代码是一团糟,我正在学习如何与补全完美配合。任何改进都非常欢迎。 谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。