从setCompletionBlockWithSuccess块中获取值

时间:2015-03-18 14:52:15

标签: ios afhttprequestoperation

我想从Web服务获取一些数据并且它工作正常我现在想要从块中的变量存储返回的值,但变量的值仅在块内部更改并返回{ {1}}在街区之外,我该怎么办?这是我的代码:

null

1 个答案:

答案 0 :(得分:1)

问题不在于访问变量,而在于时间。

在运行完成块之前,您的第二个NSLog语句正在运行。该操作以异步方式运行,并且在完成块中设置之前您正在记录returnedData

编辑以添加示例解决方案:

一种解决方案是在您的调用类中创建完成块,然后使用getDataFromServer:方法进入操作。

- (void)getDataFromServer:(NSString *)urlString completion:(void (^)(AFHTTPRequestOperation *operation, id responseObject))completion {
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    NSURLCredential *credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceNone];

    NSMutableURLRequest *request = [manager.requestSerializer requestWithMethod:@"GET" URLString:urlString parameters:nil];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    [operation setCredential:credential];
    [operation setResponseSerializer:[AFJSONResponseSerializer alloc]];
    [operation setCompletionBlockWithSuccess:completion];

    [manager.operationQueue addOperation:operation];
}