将Facebook数据加载到表格视图中

时间:2014-04-14 00:29:19

标签: ios objective-c uitableview facebook-sdk-3.0

我坚持使用PROPER方式获取所有用户的Facebook好友并将其加载到表格视图中(我只是使用FBFriendPickerViewController但它的丑陋而且它似乎没有出现你可以修复它)

我想要的只是单元格imageView中的个人资料图片和单元格textLabel中的名称,简单就是这样。

使用NSURL / NSData执行此操作并不会裁剪图像,而是使用FBProfilePictureView,因此请尝试在任何解决方案中使用它。谢谢!

从Facebook获取数据

-(void)facebookOpenSession {

    if (FBSession.activeSession.isOpen) {
        [[FBRequest requestForMyFriends] startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

            if (error) {
                // handle error
            } else {
                self.facebookFriends = [NSArray arrayWithArray:[result objectForKey:@"data"]];
                [[NSNotificationCenter defaultCenter] postNotificationName:@"facebookRequestForMyFriends" object:self];
            }
        }];
    }
}

将数据配置到单元格

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    // Configure the cell...
    NSDictionary<FBGraphUser> *friend = [self.facebookFriends objectAtIndex:indexPath.row];
    cell.textLabel.text = friend.name;

    NSURL *profilePictureUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=normal", friend.id]];

    NSData *profilePictureData = [NSData dataWithContentsOfURL:profilePictureUrl];

    cell.imageView.image = [UIImage imageWithData:profilePictureData];

    return cell;
}

人们如何通过Facebook SDK学习如何制作所有这些东西,我花了将近4个小时尝试做上面描述的事情,我觉得我完全错过了什么。

1 个答案:

答案 0 :(得分:0)

有几个开源库可以轻松下载图像。我最喜欢的是AFNetworking,但也有SDWebImage。使用其中一个类别,您的任务就变得如此简单:

[myImageView setImageURL:"http://test.com/test.jpg"];

即使您不想使用这些图书馆,也不要按照您当前正在尝试使用的方式(即[NSData dataWithContentsOfURL:profilePictureUrl])进行操作。我相信这是一个阻止你的UI的同步操作。使用上面2个链接之一的代码,或者创建自己的UIImageView类别。