2014-01-20 2 views
0

저는 RubyMotion을 처음 접했고 벽에 닿았습니다.Rubymotion 및 Objective C 게터 블록

는 좀 링크드 인의 OAuth 일을하려고 노력하고있어 나는

client = LIALinkedInHttpClient.clientForApplication(application, presentingViewController:nil) 

client getAuthorizationCode:^(NSString * code) { 
    [self.client getAccessToken:code success:^(NSDictionary *accessTokenData) { 
     NSString *accessToken = [accessTokenData objectForKey:@"access_token"]; 
     [self.client getPath:[NSString stringWithFormat:@"https://api.linkedin.com/v1/people/~?oauth2_access_token=%@&format=json", accessToken] parameters:nil success:^(AFHTTPRequestOperation * operation, NSDictionary *result) { 
      NSLog(@"current user %@", result); 
     } failure:^(AFHTTPRequestOperation * operation, NSError *error) { 
      NSLog(@"failed to fetch current user %@", error); 
     }]; 
    } failure:^(NSError *error) { 
     NSLog(@"Quering accessToken failed %@", error); 
    }]; 
} cancel:^{ 
    NSLog(@"Authorization was cancelled by user"); 
} failure:^(NSError *error) { 
    NSLog(@"Authorization failed %@", error); 
}]; 

사람이 아마도 쓰기 방향으로 날 지점 수 RubyMotion

에 다음 변환 할 필요가?

client.getAuthorizationCode(lambda { |code| 

}, cancel: lambda { 

}, failure: lambda { |error| 

}) 

난 당신이 원하는 경우 람다는 -> 또는 Proc을 나타내는 표현이 사용할 수있는 생각 :

답변

3

루비 2.0의 stabby 람다를 사용하는 덜 입력 방법은 다음과 같습니다

client.getAuthorizationCode -> (code) { 
    NSLog "Success" 
}, cancel: -> 
    NSLog "Auth was cancelled" 
}, failure: -> (error) { 
    NSLog "Auth failed" 
} 
+0

덕분에, 나는 그것이 루비 2.0 인에 바로 아래로, 대답으로 이것을 선택했습니다. 나를 위해 완벽하게 작동합니다. –

1

다음은 RubyMotion에 목표 - C 블록을 사용하는 것입니다 방법에 대한 생각입니다. 자세한 내용은 RubyMotion docs을 참조하십시오. 그들은 블록을 시작하고 끝내기 위해 doend을 사용하는 것을 보여 주지만,이를 위해 나는 중괄호를 선호합니다.