2013-02-20 16 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