2

我想使用FBFriendsPickerViewController提供有限的朋友列表(例如,由特定 FQL 生成) 。文档提示可以使用FBCacheDescriptor预取好友列表,但后者的文档很差。我在 SDK 示例中没有找到任何示例。

4

2 回答 2

3

据我了解,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;
}

Facebook 提供的 Scrumptious 演示应用程序有一个很好的例子。

您可以使用新的 API 执行 FQL,但就像我说的那样,将它与缓存绑定在任何地方都没有记录。以下是使用新 SDK 运行 FQL 的方法...

- (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];  
}
于 2012-07-23T03:32:54.770 回答
2

FBFriendPickerDelegate

- (BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker shouldIncludeUser:(id<FBGraphUser>)user
于 2012-08-07T03:19:12.587 回答