gpt4 book ai didi

ios - AFNetworking 2.0 - 如何将响应从子类 AFHTTPSessionManager 传递给另一个类

转载 作者:行者123 更新时间:2023-11-28 18:19:27 26 4
gpt4 key购买 nike

初学者 ios AFNetworking 2.0 Qns:将 AFHTTPSessionManager 子类化为“MyAPIManager”之类的子类并将我所有的 API 调用(GET/POST/PUT 等)放在这个自定义管理器类中,我在使用响应时遇到问题根据要求在另一个类(class)(比如 B 类)取得成功。

我知道我可以重构它并将 POST 调用部分提取到类 B,这样我就可以在回调中转储相关的类 B 方法,但这会变得困惑,尤其是在多个 API 调用的情况下。

我想将此响应(例如返回的 objectId)传递给另一个类,现在我只是使用 B 类监听的 NSNotification,但这仍然感觉有点“hackish”,我想知道是否有更好的方法。

当前在 MyAPIManager 中:AFHTTPSessionManager:

- (void) POSTRecordJson:(NSDictionary *)json
{
[self POST:@"classes/Record/" parameters:json success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"Posted JSON: %@", json.description);
if ([responseObject isKindOfClass:[NSDictionary class]]) {
NSLog(@"Response: %@", responseObject);
//Notify objectId received
[[NSNotificationCenter defaultCenter]
postNotificationName:@"ReceivedObjectIdNotification"
object:self
userInfo:responseObject];
}
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Error: %@", error);
}];
}

在 B 类中,我调用了:

MyApiManager *manager = [MyApiManager sharedInstance];
[manager POSTRecordJson:someJSONdict];

最佳答案

你可以做两件事.. 通过使用协议(protocol)/委托(delegate)或 block ..

但我个人更喜欢 block soo..

先做一个block Datatype

typedef void(^SuccessBlock)(id success); 示例

并在其上添加带有 block 的参数

- (void) POSTRecordJson:(NSDictionary *)json success:(SuccessBlock)success
{
[self POST:@"classes/Record/" parameters:json success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"Posted JSON: %@", json.description);
if ([responseObject isKindOfClass:[NSDictionary class]]) {
NSLog(@"Response: %@", responseObject);
//Notify objectId received
success(responseObject);

}
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Error: %@", error);
}];
}

并调用新函数..

MyApiManager *manager = [MyApiManager sharedInstance];
[manager POSTRecordJson:someJSONdict success:^(id result){
NSDictionary *dictionary = (NSDictionary *)result;
NSLog(@"response: %@",dictionary)
}];

关于ios - AFNetworking 2.0 - 如何将响应从子类 AFHTTPSessionManager 传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23358692/

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