程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> ios-等待AFJSONRequestOperation完成

ios-等待AFJSONRequestOperation完成

編輯:編程綜合問答
等待AFJSONRequestOperation完成

使用AFNetworking獲取網站的一些JSON信息,如何從asynchronou請求返回得到響應?

- (id) descargarEncuestasParaCliente:(NSString *)id_client{

        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://whatever.com/api/&id_cliente=%@", id_client]]];

        __block id RESPONSE;

        AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

            RESPONSE = JSON;

        } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
            NSLog(@"ERROR: %@", error);
        }];

        [operation start];

        return RESPONSE;
    }

最佳回答:


因為是異步執行的關系,顯然你這樣返回肯定不能及時得到結果。
你可以將你的方法使用block改造一下

- (void) descargarEncuestasParaCliente:(NSString *)id_client block:(void(^)(id json))processResult{

        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://whatever.com/api/&id_cliente=%@", id_client]]];    
        AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
            processResult(JSON);  ///回調處理返回的json結果
        } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
            NSLog(@"ERROR: %@", error);
        }];

        [operation start];
    }

調用:

[self descargarEncuestasParaCliente:@"1" block:^(id json) {
      NSLog(@"return result is :%@",json);
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved