gpt4 book ai didi

ios - Alamofire 失败时调用 api 的最佳方式

转载 作者:行者123 更新时间:2023-11-30 12:08:45 26 4
gpt4 key购买 nike

当收到特定错误(例如错误代码 -1005)时,我需要调用 API。

我想在 Alamofire 文件中处理这个问题,以便它可以与项目中的所有 api 一起使用。

我在 ObjC 的 AFNetworking 中的 dataTaskWithHTTPMethod 中使用以下代码处理此问题:-

if (failure)
{
if (error.code == -1005)
{
[self POST:URLString parameters:parameters progress:nil success:success failure:failure];
}
}

有人可以帮我在阿拉莫菲尔做到这一点吗?

最佳答案

让我们通过一个例子来理解。

让我猜一下,因为您已经创建了一个类来管理所有与 Web 服务相关的内容。 (如果还没有,那么最好创建一个最佳实践)。

好的,现在创建两个类型别名来管理响应。

这里是:-

这里我再次假设您需要整个字典作为成功响应,并使用错误作为失败响应。

typealias successCompletion = (([String:Any]) -> ())
typealias failureCompletion = ((Error) -> ())

现在这里有一个 WSManager 类,用于处理那里的所有 API 相关内容。

    class AlamofireManager {

static func sampleFunctionOfWebService(successCompletion:successCompletion , failureCompletion:failureCompletion) {

if success {
successCompletion(["Key":"success"])
} else {
failureCompletion(-1005 as! Error)
}
}
}

you need to pass the both typealias in function for getting CallBack in desired class.

Here for only understanding purpose we are going to pass static dictionary :-> ["Key":"success"] and static -1005 as Error.

现在如何在我们想要的类中使用这个函数?

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

func wsCalling() {

AlamofireManager.sampleFunctionOfWebService(successCompletion: { (dict) in

print(dict)

}) { (error) in

if error.code == -1005 {
self.wsCalling() // recall API Again
} else {
// your other logic
}

}
}

}

I have not mentioned here for URLSeeionTask and All , its good thing to manage URLSeeionTask. If you have a instance of URLSeeionTask of Previous API then cancel it first and then try to recall it again.

快乐编码。

关于ios - Alamofire 失败时调用 api 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46340779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com