8
완료 핸들러에서 값을 리턴 할 메소드를 호출하려고합니다. 이 메서드는 비동기 적으로 수행되며 메서드 본문이 모두 실행되기 전에 값을 반환하지 않습니다. 나는 NXOAuth2Request
이 완료 될 때까지 getCurrentClient
방법은 값을 반환하지 않으려는완료 핸들러와 리턴 값
// This is the way I want to call the method
NSDictionary *account = [_accountModel getCurrentClient];
// This is the faulty method that I want to fix
- (NSDictionary *)getCurrentClient
{
__block NSDictionary *currentClient = nil;
NXOAuth2Account *currentAccount = [[[NXOAuth2AccountStore sharedStore] accounts] lastObject];
[NXOAuth2Request performMethod:@"GET"
onResource:[NSURL URLWithString:[NSString stringWithFormat:@"%@/clients/%@", kCatapultHost, currentAccount.userData[@"account_name"]]]
usingParameters:nil
withAccount:currentAccount
sendProgressHandler:nil
responseHandler:^ (NSURLResponse *response, NSData *responseData, NSError *error) {
NSError *jsonError;
currentClient = [NSJSONSerialization JSONObjectWithData:responseData
options:kNilOptions
error:&jsonError];
}];
return currentClient;
}
: 저는 여기에 달성하기 위해 노력하고 무엇을 설명하기 위해 몇 가지 결함 코드입니다. 요청의 응답 핸들러 내에서 현재 클라이언트를 리턴 할 수 없습니다. 그렇다면 내 선택권은 무엇입니까?
'getCurrentClient'가 값을 반환하도록 할 수 있습니까? ** 그리고 ** 완료 핸들러가 있습니까? 반환 값은 다음과 같습니다. return handler (deserializedDict); –
아니요. 실제 비동기 요청이 완료되기 전에'getCurrentClient'가 리턴합니다. getCurrentClient가 사용되는 반환 값 대신에 콜백을 사용하도록 구조를 업데이트해야합니다. – Tim
정말 대단히 도움이되었습니다. 고마워, 팀. –