2014-07-15 17 views
0

我想做一個函數,我會調用來處理AFNetworking JSON解析。試圖做一個函數來處理AFNetworking

這裏是我的代碼:

- (int)startParseWithParameters:(NSDictionary*)incomingParameters andUrlAdress:(NSString*)urlAdress; 
{ 
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    manager.responseSerializer = [AFJSONResponseSerializer serializer]; 

    NSDictionary *parameters = incomingParameters; 
    [manager POST:urlAdress parameters:parameters success:^ 

    (AFHTTPRequestOperation *operation, id responseObject) 
    { 
     NSString *recivedErr = responseObject[@"error"]; 
     _errValue = [recivedErr intValue]; 

     NSLog(@"JSON: %d", _errValue); 
    } 

    failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    { 
     NSLog(@"Error: %@", error); 
    }]; 

    return _errValue; 
} 

我希望函數返回0或1,那麼我就會知道,如果有錯誤或沒有。 現在它總是返回0.

當我嘗試返回成功塊時,出現編譯器錯誤。

什麼可能導致此問題?

+0

這是因爲成功的塊被執行異步。 – rckoenes

+0

所以我應該返回int? – OshriALM

+0

不,你應該從該塊中調用一個方法,而不是依靠返回方法。因爲你的函數將在調用成功塊之前退出(並返回)。 – rckoenes

回答

0

的更迭塊異步,所以你應該只調用塊中的方法來處理:

- (void)startParseWithParameters:(NSDictionary*)incomingParameters andUrlAdress:(NSString*)urlAdress { 
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    manager.responseSerializer = [AFJSONResponseSerializer serializer]; 

    NSDictionary *parameters = incomingParameters; 
    __weak typeof(self) weakSelf = self; 
    [manager POST:urlAdress parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 


     NSString *recivedErr = responseObject[@"error"]; 
     [weakSelf didReceiveResponse:[recivedErr integerValue]; 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 
} 

-(void)didReceiveResponse:(NSInteger)status { 
} 
+0

好..但我應該如何返回值? 無效函數無法返回值.. – OshriALM

+0

你不能這是問題。您的方法已完成後,成功塊會執行。服務器的調用是異步處理的。 – rckoenes

+0

好吧..所以我不能建立一個函數,我可以從另一個類調用? 我有很多服務器請求在我的應用程序,所以我想建立一個JasonParser類,將處理所有.. – OshriALM

相關問題