在tableview中显示一些facebook朋友(带有id)的个人资料图片

时间:2013-05-08 03:35:41

标签: ios objective-c facebook uitableview

我在facebook graph api上工作。而且我已经获得了使用我的应用程序的用户的身份。我可以显示用户的ID和我想要做的事情。它在我的tableview的每个单元格中显示为优秀用户的FBProfilePictureView。

  [[FBRequest requestForMe] startWithCompletionHandler:
 ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
     if (!error) {}

     NSString* fql =
     @"SELECT uid FROM user WHERE is_app_user=true AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me())";

     [FBRequestConnection startWithGraphPath:@"/fql"
                                  parameters:@{ @"q" : fql}
                                  HTTPMethod:@"GET"
                           completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

                               FBRequest *fql = [FBRequest requestForGraphPath:@"fql"];
                               [fql.parameters setObject:@"SELECT uid,name,is_app_user FROM user WHERE is_app_user AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me())" forKey:@"q"];

                               [fql startWithCompletionHandler:^(FBRequestConnection *connection,
                                                                 id result,
                                                                 NSError *error) {
                                   if (result) {


                                       NSArray *arrayRsult = [result objectForKey:@"data"];

                                       NSMutableArray *ids = (NSMutableArray *) [arrayRsult valueForKey:@"uid"];
                                       NSMutableArray *names = (NSMutableArray *) [arrayRsult valueForKey:@"name"];

                                       recentFriends = [[NSMutableArray alloc] init];
                                       idFriends = [[NSMutableArray alloc] init];










                                       for (NSDictionary *c  in ids)
                                       {
                                           [idFriends addObject:c];



                                       }


                                        arrayLength = [recentFriends count];




                                       NSLog(@"ids are : %@ ",idFriends);

                                       NSLog(@"there are %i", arrayLength);

我已经完成了,开始使用以下代码在每个单元格中显示我的脸谱资料图片:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

FBProfilePictureView *prof = [[FBProfilePictureView alloc]initWithFrame:CGRectMake(5, 5, 30, 30)];

[[FBRequest requestForMe] startWithCompletionHandler:
 ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
     if (!error) {
         prof.profileID = [user objectForKey:@"id"];
     }
 }];

            [cell addSubview:prof];

}

我没有为自定义单元格使用自定义单元格和笔尖。 我不知道如何为这个表创建一个数组。 我试过这段代码cell.imageView.image = [idFriends objectAtIndex:indexPath.row];   (idFriends在.h文件中声明为__block NSMutableArray) 谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

是的,您可以在UITableViewCell中显示用户的个人资料图片,您可以使用Cell的默认ImageView。您可以通过以下Facebook ID获取用户的个人资料图片。

获取个人资料使用的小/拇指图像

http://graph.facebook.com/<Friends Facebook ID>/picture?type=small

您还可以在type,普通,大,方

中尝试以下参数
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://graph.facebook.com/517267866/picture?type=small"]];
UIImage *profilePic = [UIImage imageWithData:imageData];

鉴于代码将从网址抓取图片并将UIImage分配给您的UIImageView

如果您想了解更多详细信息,请Read Documentation here

cell.imageView.image = profilePic;

答案 1 :(得分:0)

实际上使用“http://graph.facebook.com/ / picture?type = small”来获取用户的个人资料图片甚至他们的朋友都很慢。

更好更快的方法是将FBProfilePictureView对象添加到视图及其profileID属性中,分配用户的Facebook ID。

例如:  FBProfilePictureView * friendsPic;

friendsPic.profileID = @“1379925668972042”;