iOS SDK 3.0 — FBFriendPickerViewController с FBCacheDescriptor — ограниченный список друзей

Я хотел бы представить ограниченный список друзей (например, сгенерированный определенным FQL), используя FBFriendsPickerViewController. В документации указано, что список друзей может быть предварительно загружен с помощью FBCacheDescriptor., но документация последнего оставляет желать лучшего. Я не нашел ни одного примера в образцах SDK.


person Tal Yaniv    schedule 21.07.2012    source источник


Ответы (2)



Насколько я понимаю, FBCacheDescriptor предназначен для предварительной выборки данных, которые вам нужны, чтобы улучшить отзывчивость табличных представлений. Например, если вы хотите кэшировать список выбора друзей, вы можете сделать что-то вроде...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions {  
    if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
        [FBSession sessionOpen];

        FBCacheDescriptor *cacheDescriptor = [FBFriendPickerViewController cacheDescriptor];
        [cacheDescriptor prefetchAndCacheForSession:FBSession.activeSession];
    }
   return YES;
}

Есть хороший пример демонстрационного приложения Scrumptious, предоставленного Facebook.

Вы можете выполнить FQL, используя новый API, но, как я уже сказал, связывание этого с Cache нигде не задокументировано. Вот как вы можете запустить FQL с помощью нового SDK...

- (void)getFacebookFriends {
    NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                    @"Your FQL Query goes here", @"query",
                                    nil];

    FBRequestConnection *connection = [FBRequestConnection new];

    FBRequestHandler handler =
    ^(FBRequestConnection *connection, id result, NSError *error) {        
        ........
        //Process the result or the error
        NSLog(@"%@", result);
    };

    FBRequest *request = [[FBRequest alloc] initWithSession:FBSession.activeSession 
                                                 restMethod:@"fql.query" 
                                                 parameters:[params mutableCopy] 
                                                 HTTPMethod:HTTP_GET];

    [connection addRequest:request completionHandler:handler];

    [self.requestConnection cancel];    
    self.requestConnection = connection;  

    [connection start];  
}
person Suneth Mendis    schedule 23.07.2012
comment
Спасибо, Шатодфлесс. Но все же я не знаю, можно ли привязать FQL-ответ к FBFriendPickerViewController. - person Tal Yaniv; 23.07.2012
comment
Я не верю, что ты можешь. Вам нужно будет использовать API requestForGraphPath и обработать набор результатов самостоятельно, если вы пойдете по маршруту FQL, который может оказаться медленным. Могу я узнать, почему вместо этого вы хотите использовать FQL? - person Suneth Mendis; 26.07.2012
comment
Список всех друзей, у которых есть более 10 общих друзей: ВЫБЕРИТЕ ... И взаимный_количество_друзей › 10 ORDER BY last_name - person Tal Yaniv; 27.07.2012