0

我正在使用 Evernote API,并且我创建了一个帮助类,该类将包含 Evernote API 特定的方法,以尽可能保持代码抽象。

但是需要从视图控制器调用一种方法来显示登录表单,以及在发生错误时显示警报视图。这是代码:

- (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 的方法,所以我无法更改它。

如何将此方法移至帮助程序类?起初我想到了委托,但我已经让这个视图控制器成为助手类的委托,以便向它发送其他错误消息,并且让助手类和视图控制器委托对我来说似乎是代码异味,如果它是甚至可能。

4

1 回答 1

1

如果 Evernote API 需要一个视图控制器,并且你想要完全抽象,我会在帮助器类中有一个类似这样的方法,在帮助器类中是这样的:

- (void)authenticateWithViewController:(UIViewController *)viewController

在这个方法中,你可以封装任何共享行为,通过调用 Evernote 会话 API 将viewController参数传递给方法。

于 2013-04-03T02:31:10.220 回答