【问题标题】:What is the most efficient way to get a list of a Facebook user's friends' names in the Facebook iOS SDK?在 Facebook iOS SDK 中获取 Facebook 用户的朋友姓名列表的最有效方法是什么?
【发布时间】:2011-04-29 15:21:39
【问题描述】:

我想使用 Graph API。我想将它们加载到 UITableView 中。 加载整个用户详细信息也很慢...... 有没有办法让它更快?

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

【问题讨论】:

    标签: facebook uitableview graph ios


    【解决方案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 为您管理选择列表。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 2013-08-04
        相关资源
        最近更新 更多