2014-02-08 3 views
0

AFNetworking POST 요청의 응답을 기반으로 값을 반환하는 함수를 만들려고합니다.AFNetworking 응답을 기반으로 한 반환 값

그러나 함수를 비동기 적이므로 응답을 실제로 받기 전에 값이 반환되므로이를 수행하는 방법을 알 수 없습니다.

int didLogin; 

__block NSString *response; 

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; 

    NSDictionary *parameters = @{@"username":username, @"password":password}; 

    [manager POST:loginUrl parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 

     //json "response" object from server response 
     response = [responseObject objectForKey:@"response"]; 

     NSLog(@"Response: %@", response); 

     [HUD hide:YES]; 
     [HUD removeFromSuperViewOnHide]; 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     [HUD hide:YES]; 
     [HUD removeFromSuperViewOnHide]; 

     NSLog(@"Login Error: %@", error); 
    }]; 

    if ([response compare:@"1"] == NSOrderedSame || [response compare:@"2"] == NSOrderedSame) 
    { 
     //successful login/1-new device/2-existing device 
     didLogin = 1; 
    } 
    else if ([response compare:@"0"] == NSOrderedSame) 
    { 
     //unsuccessful login/invalid password 
     didLogin = 0; 
    } 
    else{ 
     //unsuccessful login 
     didLogin = 2; 
    } 

어떤 시점에서 로그인 했습니까?

이 작업을 수행 할 수있는 방법이 있습니까, 아니면 동기 요청을 사용해야합니까?

답변

2

메서드는 매개 변수로 콜백 블록을 가져와야하므로 비동기 프로세스가 완료되면 해당 블록을 didLogin으로 호출해야합니다. 코드 전체에서 수행하려는 작업의 비동기 성격을 포용해야합니다.

+0

콜백을 설정하는 방법을 알아 내는데 1 시간 정도 걸렸지 만 모든 것이 작동한다고 생각합니다. 감사! – Justin

관련 문제