Facebook iOS SDK - Пользовательский делегат - PullRequest
2 голосов
/ 14 июня 2011

Я работаю над новым проектом с интеграцией в Facebook. Приложение должно делать разные запросы на Facebook. SDK предоставляет один делегат, который обрабатывает каждый запрос одинаково. Теперь мне нужно иметь собственный делегат для обработки определенного запроса. Может ли кто-нибудь дать мне подсказку, как этого добиться?

1 Ответ

4 голосов
/ 14 июня 2011

Класс Facebook предоставляет множество методов, которые возвращают объекты FBRequest *, и у каждого из этих методов есть аргумент для делегата, которым может быть любой объект, который вам нравится, если он соответствует протоколу FBRequestDelegate.

Поэтому либо просто есть собственный класс, который реализует протокол для каждого типа запроса.Или есть один класс, который реализует протокол, и внутри этих методов вам нужно будет проверить полученный вами FBRequest, чтобы определить, что делать.Так, например, если вы звоните:

Facebook *fb = [[Facebook alloc] initWithAppId:kYourFacebookAppId];
[params setObject:[NSNumber numberWithBool:YES] forKey:@"PostComment"];
[fb requestWithParams:params andDelegate:delegate];
[fb release];

, то в делегате вы можете сделать что-то вроде:

- (void)request:(FBRequest *)request didLoad:(id)result {
    // Make a decision based on the request
    if ([[request.params objectForKey:@"PostComment"] boolValue]) {
        // Here we should post a comment.

    }
}

Однако лично я бы этого не сделал,так как это будет намного сложнее поддерживать.Намного лучше было бы написать отдельные классы для каждой задачи, связанной с Facebook.Эти классы могут наследоваться от базового класса FBDelegate, который выполняет общие функции, такие как обработка ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...