метод, возвращающий результат, полученный в делегате - PullRequest
0 голосов
/ 04 сентября 2011

У меня есть следующий метод, который в основном пытается получить изображение профиля пользователя из Facebook / Twitter. Проблема в том, что результат будет возвращен в делегате, поэтому результаты profilePicture получаются в делегате, вызываемом этими двумя методами. Как мне с этим бороться?

- (NSString *) profilePicture
{
    NSString * result;
    if (facebook.isSessionValid){
        [facebook requestWithGraphPath:@"me/picture"
                             andParams:nil
                         andHttpMethod:@"GET"
                           andDelegate:self];
    } else if ([_twitter isAuthorized]){
        [_twitter getUserInformationFor:[_twitter username]];
    }
    return result;
}

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

Вы устанавливаете делегата на self. Таким образом, вам нужно реализовать методы протокола, которые класс facebook указывает в этом классе.

В Facebook API протокол называется FBRequestDelegate, а метод, который необходимо реализовать, - request:didLoad:

Пример: взято с этой страницы

- (void)request:(FBRequest *)request didLoad:(id)result {
    if ([result isKindOfClass:[NSArray class]]) {
        result = [result objectAtIndex:0];
    }
    NSLog(@"Result of API call: %@", result);
}
0 голосов
/ 04 сентября 2011

BY вызывая "[facebook requestWithGraphPath: @" me / picture "andParams: nil andHttpMethod: @" GET "andDelegate: self];"Вы должны создать объект FBRequest.

Вы можете настроить FBRequest, добавить новый typedef

typedef enum
{
    ...
    currentactionProfilePictureAccess,
    ...
}currentaction;

@interface FBRequest:<superclass>
{
    .....
    currentaction currentactiontype;
}
.....
@property(nonatiomic,asign) currentaction currentactiontype;
....

@ end

и синтезировать его в реализации.

И при создании запросаукажите тип запроса (currenttactiontype), который вы делаете.

Когда результат приходит в запросе "- (void): запрос (FBRequest *) didLoad: (id) результат Проверка типа запроса и процесса.

if(request.currentactiontype==currentactionProfilePictureAccess)
{
    //call what ever you want.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...