在 Facebook iOS SDK 中获取 Facebook 用户好友姓名列表的最有效方法是什么?

问题描述 投票:0回答:2

我想使用图形 API。我想将它们加载到 UITableView 中。 加载整个用户详细信息也很慢...... 有什么办法可以让它更快吗?

还有一件事: 有没有办法可以在用户登录后在 Facebook iOS SDK 提供的登录窗口中加载 Facebook 页面?我几乎想用用户的登录凭据加载某个粉丝页面......

ios facebook uitableview facebook-ios-sdk
2个回答
3
投票

我在 Facebook 类中添加了以下方法来获取用户的好友列表:

-(BOOL) getFriendsList : (id<FBRequestDelegate>) delegate
{
    if (! [self isSessionValid])
    {
        return NO;
    }
    else
    {
        [self requestWithGraphPath:@"me/friends" andDelegate:delegate];
        return YES;
    }
}

为了处理来自服务器的响应,我编写了以下方法:

- (void)request:(FBRequest *)request didLoad:(id)result
{
    NSDictionary * data = result;
    NSArray *separatedName;
    Contact * current;
    _contactsFromFacebook = [[NSMutableDictionary alloc] init];

    for (NSDictionary * contact in data) 
    {
        separatedName = [[contact objectForKey:@"name"] componentsSeparatedByString:@" "];
        current = [[Contact alloc] 
            initWithFirstName:[separatedName objectAtIndex:0] 
                  andLastName:[separatedName objectAtIndex:1]];
        if(current.alphabeticKey)
        {
            [self.contactsFromFacebook addObject:current toExsistingArrayWithKey:current.alphabeticKey];
            [self addFriendToImportList:current];
        }
        [current release];
    }
    self.allKeysSorted = [NSMutableArray arrayWithArray:[self.contactsFromFacebook allKeys]];
    [self.tableView reloadData];
 }

备注:

  1. “Contact”类是我编写的用于保存联系人数据的类。
  2. 我只关心朋友的名字和姓氏。
  3. 我拿着一本字典来保存来自Facebook的所有联系人,并且该字典中的所有联系人都将显示在
    UITableView
  4. 在方法结束时,我调用
    [self.tableView reloadData]
    来(重新)加载我刚刚从 Facebook 获得的所有联系人。如果您尝试早点调用它,就像
    viewDidLoad
    中那样,您最终会得到一个空表,因为还没有联系人。

1
投票

使用 Facebook SDK 3.0,您可以通过以下方式获取好友列表:

FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
                                  NSDictionary* result,
                                  NSError *error) {
    NSArray* friends = [result objectForKey:@"data"];
    NSLog(@"Found: %i friends", friends.count);
    for (NSDictionary<FBGraphUser>* friend in friends) {
        NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
    }
}];

考虑使用 KNMultiItemSelector 来为您管理选择列表。

© www.soinside.com 2019 - 2024. All rights reserved.