2013-02-20 17 views
2

我目前正在研究iOS应用程序,并使用AFNetworking与远程API进行通信。我想要做的就是创建不同的函数,以返回API响应。我当前的代码是:在后台执行AFHTTPOperation并返回结果

-(void)requestMethod:(NSString *)method arguments:(id)arguments 
{ 
    NSDictionary *[email protected]{@"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; 

谢谢!

回答

1

你可以让你的方法采取与产生的NSArray作为参数块,并把它作为一个ARG到取回功能:

-(void)getUsersFromAPIWithResponse:(void(^)(AFHTTPRequestOperation *operation, NSArray *users))responseBlock { 
    NSDictionary *[email protected]{}; 
    [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); 
    }]; 
} 
+0

我不认为你明白我的意思或我不不明白你的答案,但我想要我返回在我的成功块中的responseParsed字典。 – Abel 2013-02-20 20:07:22

+0

我明白了!让我编辑,坚持。 – CodaFi 2013-02-20 20:09:21

+0

但是什么时候NSArray返回? – Abel 2013-02-20 20:12:49