gpt4 book ai didi

ios - 更改委托(delegate)时丢失 api 响应

转载 作者:行者123 更新时间:2023-11-30 13:01:53 25 4
gpt4 key购买 nike

我在应用程序中使用协议(protocol)时遇到问题,我创建了一个控件来管理 api 调用,并将响应返回到委托(delegate) View Controller 。但我关心的是例如:

我在 ViewController1 并请求一个 api 来获取管理员配置文件,并将 api 委托(delegate)分配给 self 含义 (APIClient.delegate = self) :ViewController1 将收到响应,因为它实现了委托(delegate)api 客户端返回响应

现在,在获取管理员配置文件的响应返回之前。我转到 ViewController2 并分配了 APIClient.delegate = self 并在此处请求了另一个 api 调用。现在获取管理员配置文件的响应来了,但它将被丢弃,因为委托(delegate)不等于发出请求的 ViewController1 或未实现处理配置文件响应的方法!

这是我的一些代码:

@objc protocol APIClientDelegate : NSObjectProtocol {
@objc optional func getAdminProfileFinishedWithResponse(_ dictionary:NSMutableDictionary)
@objc optional func getAdminProfileFailedWithError(_ error:NSError)
}



@objc class APIClient: APIClientDelegate {

weak var delegate : APIClientDelegate?


func getAdminProfile(_ postDictionary:NSMutableDictionary){


self.get(getUserProfilePath, parameters: postDictionary, progress: nil, success: { (task, response) in

if self.delegate != nil && self.delegate!.responds(to: #selector(APIClientDelegate.getAdminProfileFinishedWithResponse(_:))){
self.delegate!.getAdminProfileFinishedWithResponse!((response as! NSDictionary ).mutableCopy() as! NSMutableDictionary)
}

}) { (task, error) in

if self.delegate != nil && self.delegate!.responds(to: #selector(APIClientDelegate.getAdminProfileFailedWithError(_:))){
self.delegate!.getAdminProfileFailedWithError!(error as NSError)
}

}
}
}

如果您明白我的意思,如果 ViewController1 请求一个 api 来确保在委托(delegate)更改时响应不会丢失。知道如何在后台动态解决它吗?

最佳答案

为了实现您想要的目的,您每次进行 API 调用时都创建一个 APIClient 对象。

例如

let objClient = APIClient()
objClient.delegate = self
objClient.getAdminProfile(.....

这样,每次调用的引用都会包含在内,API 调用不会重叠。

关于ios - 更改委托(delegate)时丢失 api 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828694/

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