0

저는 Evernote API를 사용하고 있으며 코드를 가능한 한 추상화 된 상태로 유지하기 위해 Evernote API 관련 메서드가 포함 된 도우미 클래스를 만들었습니다.이 뷰 컨트롤러 의존 메서드를 도우미 클래스로 옮기려면 어떻게해야합니까?

그러나 오류가 발생하면 alertView뿐만 아니라 로그인 폼을 표시하기 위해보기 컨트롤러에서 호출해야하는 한 가지 방법이 있습니다. 여기에 코드입니다 :

- (IBAction)loginToEvernote:(id)sender { 

EvernoteSession *session = [EvernoteSession sharedSession]; 
[session authenticateWithViewController:self completionHandler:^(NSError *error) { 
    if (error || !session.isAuthenticated) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                 message:@"Could not authenticate" 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 
     [alert show]; 

    } else { 

    } 
}]; 

} 그것은 나에게 보인다

"authenticateWithViewController : completionHandler"방법은 로그인 정보가 들어있는 모달 뷰 컨트롤러를 보여주기 위해, 뷰 컨트롤러에 있어야합니다.

다시 말하지만, 이것은 API의 메소드이므로 변경할 수 없습니다.

어떻게이 방법을 도우미 클래스로 옮길 수 있습니까? 처음에는 위임이라고 생각했지만 이미 만들었습니다 이보기 컨트롤러는 도우미 클래스의 델리게이트로 다른 오류 메시지를 보내고 서로의 도우미 클래스와 뷰 컨트롤러 위임자를 코드 작성자로 보았습니다. 심지어 가능하다면. 에버 노트 API는 뷰 컨트롤러를 필요로하고, 당신이 완전한 추상화를 원하는 경우

답변

1

, 나는 헬퍼 클래스에서이 같은이 뭔가 같은 헬퍼 클래스의 메소드 것이다 :

- (void)authenticateWithViewController:(UIViewController *)viewController 

이 방법을 사용하면 메서드에 viewController 매개 변수를 전달하는 Evernote 세션 API를 호출하여 모든 공유 동작을 캡슐화 할 수 있습니다.

관련 문제