Ios 在后台执行AFHTTPOperation并返回结果
我目前正在开发一个iOS应用程序,我使用AFNetworking与远程API进行通信。我想做的是创建不同的函数来返回API响应。我目前的代码是:Ios 在后台执行AFHTTPOperation并返回结果,ios,objective-c,objective-c-blocks,afnetworking,Ios,Objective C,Objective C Blocks,Afnetworking,我目前正在开发一个iOS应用程序,我使用AFNetworking与远程API进行通信。我想做的是创建不同的函数来返回API响应。我目前的代码是: -(void)requestMethod:(NSString *)method arguments:(id)arguments { NSDictionary *parameters=@{@"jsonrpc": @"2.0", @"method": method, @"params": arguments}; [httpClient pos
-(void)requestMethod:(NSString *)method arguments:(id)arguments
{
NSDictionary *parameters=@{@"jsonrpc": @"2.0", @"method": method, @"params": arguments};
[httpClient postPath:methodPath parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSError *error;
NSDictionary *responseParsed=[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:&error];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@",error);
}];
}
现在,这段代码是由块执行的,当我收到服务器的响应时调用这些块。函数的最佳实现是什么?当在任何线程上调用该函数时,它都会返回某个方法的响应?比如:
-(NSArray *)getUsersFromAPI;
谢谢 您可以让您的方法将一个带有结果NSArray的块作为参数,并将其作为参数传递给抓取函数:
-(void)getUsersFromAPIWithResponse:(void(^)(AFHTTPRequestOperation *operation, NSArray *users))responseBlock {
NSDictionary *parameters=@{};
[httpClient postPath:methodPath parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSError *error;
NSArray *responseParsed = //do something cool;
responseBlock(operation, responseParsed);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@",error);
}];
}
我想你不明白我的意思,或者我不明白你的答案,但我想返回我成功区中的responseParsed字典。但是NSArray什么时候返回?没问题。谢谢你陪我度过这段时间,我今天有点心不在焉。