【发布时间】:2011-04-29 15:21:39
【问题描述】:
我想使用 Graph API。我想将它们加载到 UITableView 中。 加载整个用户详细信息也很慢...... 有没有办法让它更快?
还有一点: 有没有一种方法可以在用户登录后在 Facebook iOS SDK 提供的登录窗口中加载 Facebook 页面?几乎我想用用户的登录凭据加载某个粉丝页面......
【问题讨论】:
标签: facebook uitableview graph ios
我想使用 Graph API。我想将它们加载到 UITableView 中。 加载整个用户详细信息也很慢...... 有没有办法让它更快?
还有一点: 有没有一种方法可以在用户登录后在 Facebook iOS SDK 提供的登录窗口中加载 Facebook 页面?几乎我想用用户的登录凭据加载某个粉丝页面......
【问题讨论】:
标签: facebook uitableview graph ios
使用 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 为您管理选择列表。
【讨论】:
我在 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];
}
注意事项:
UITableView
[self.tableView reloadData] 来(重新)加载我刚从Facebook 获得的所有联系人。如果您尝试早点调用它,例如在viewDidLoad 中,您最终会得到一个空表,因为还没有联系人。【讨论】: