gpt4 book ai didi

ios - AFHTTPSessionManager 委托(delegate)问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:36 25 4
gpt4 key购买 nike

这是我的问题:我有一个 AFHTTPSessionManager 文件,它也是一个单例文件,用于管理我对服务器的所有 API 请求。当我使用 responseObject 从服务器获得答案后,​​我将它传回给使用委托(delegate)请求它的 UIViewController

我的问题是:由于我的经理是单例,如果同时由另一个 UIViewController 发出另一个 API 请求,委托(delegate)将设置为此 Controller ,并且当我的第一个请求 responseObject 已收到,我无法再将其传回第一个 UIViewController

我希望它很容易理解。

解决这个问题的正确方法是什么?

这是我的 AFHTTPSessionManager 类中的方法:

- (void)getStaffForCompany:(int)companyID
{
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"currentUser"])
{
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
parameters[@"apiKey"] = agendizeApiKey;
parameters[@"token"] = [[AGZUserManager sharedAGZUser] currentApplicationUser].token;

[self GET:[NSString stringWithFormat:@"scheduling/companies/%d/staff", companyID] parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
if ([self.delegate respondsToSelector:@selector(AGZClient:successedReceiveStaffList:)]) {
[self.delegate AGZClient:self successedReceiveStaffList:responseObject];
}
} failure:^(NSURLSessionDataTask *task, NSError *error) {
if ([self.delegate respondsToSelector:@selector(AGZClient:failedReceiveStaffList:)]) {
[self.delegate AGZClient:self failedReceiveStaffList:error];
}
}];
}
}

谢谢!

最佳答案

您可以定义自己的完成 block 并将您的 responseObject 传递回 Controller ,这里是一个示例 CustomCompletion

将此添加到 @implementation 行上方的 AFHTTPSessionManager.h

typedef void(^CustomCompletion)(id responseObject);

更新您的方法以包含 CustomCompletion 对象。

- (void)getStaffForCompany:(int)companyID withCompletion:(CustomCompletion)completion {
// On success pass the responseObject back like so.
completion(responseObject);
}

然后所有魔法发生的地方,回到你的 Controller 中,在你的单例上调用这个方法并处理完成。

[SingletonManager getStaffForCompany:1 withCompletion:^(id responseObject) {
if (responseObject) {
// do something with this object
}
}];

我没有测试过这段代码,但我在 Swift 中做了一些非常相似的事情,而且效果不错。

关于ios - AFHTTPSessionManager 委托(delegate)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634630/

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