gpt4 book ai didi

ios - AFNetworking 2.0 - 如何在成功时将响应传递给另一个类

转载 作者:行者123 更新时间:2023-11-28 21:54:32 24 4
gpt4 key购买 nike

我想知道如何从不同的类调用 AFHTTPSessionManagern。目前我使用这段代码来获取响应,但我不确定如何将其转换为需要参数和回发链接的单例类。我只接收和处理 JSON 代码。

static NSString * const BaseURLString = @"http://www.example.com/";
NSURL *baseURL = [NSURL URLWithString:BaseURLString];

NSDictionary *parameters = @{ @"Token" : @"123456"};

AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

[manager GET:@"/list-21.aspx?" parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
self.someDictionary = responseObject[@"User"];
[self.tableView reloadData];

} failure:^(NSURLSessionDataTask *task, NSError *error) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Films"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
}];

最佳答案

您可以使用委托(delegate)方法。

创建一个单独的类(Sync.h 和 Sync.m),其中仅包含上述创建 AFHTTPSessionManager、参数和启动连接的代码。在此类中创建委托(delegate)方法。现在从你的其他类(mainController),创建一个上面类的对象和 sync.delegate = self。一旦您收到回复/错误。委托(delegate)给在 mainController 中实现的已定义方法。

例子如下:同步管理器.h

#import <UIKit/UIKit.h>
@protocol SyncDelegate<NSObject>

-(void)syncSuccess:(id) responseObject;
-(void)syncFailure:(NSError*) error;

@end

@interface SyncManager: UIViewController
{
}

-(void) serviceCall:(NSString*)url withParams:(NSDictionary*) params;
@end

同步管理器.m

@interface SyncManager ()

@end

@implementation SyncManager

-(void) serviceCall:(NSString*)url withParams:(NSDictionary*) params {
NSURL *baseURL = [NSURL URLWithString:url];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager GET:@"/list-21.aspx?" parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
[self.delegate syncSuccess:responseObject];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
[self.delegate syncFailure:error];
}];
}
@end

ViewController.m

-(void)fetchdata {
NSDictionary *dictionary = @{@"name":@"Arun"};
SyncManager *sync = [[SyncManager alloc] init];
sync.delegate = self;
[sync serviceCall:@"www.google.com" withparams:dictionary];
}

-(void)syncSuccess:(id) responseObject {
// Parse your data
}

-(void)syncFailure:(NSError*) error {
//display Error
}

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

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