2015-03-22 5 views
0

Мне нужно просмотреть новости в facebook в моем UITableView. Я отправляю асинхронный запрос на сервер, и я получил список лент новостей. Проблема в том, что я не получаю для каждого фида размер изображения, поэтому я должен отправить еще один асинхронный запрос на сервер, вложенный в предыдущий асинхронный запрос. Этот код очень низкий, потому что я должен повторно перезагрузить мой UITableView (см. Мой код).Получить ленту новостей с помощью Facebook GraphApi в приложении iOS

Мне нужно получить размер изображения, чтобы установить высоту UITableCell и размер UIImageView внутри ячейки.

Любая идея решить мою проблему?

Ниже мой код:

-(void)loadData{ 

    //self.tableView.rowHeight = UITableViewAutomaticDimension; 

    screenRect = [[UIScreen mainScreen] bounds]; 
    screenWidth = screenRect.size.width; 
    screenHeight = screenRect.size.height; 

    self.imgDic=[[NSMutableDictionary alloc]init]; 
    self.desArr=[[NSMutableArray alloc]init]; 
    self.mexArr=[[NSMutableArray alloc]init]; 
    self.udidArr=[[NSMutableArray alloc]init]; 


    [FBRequestConnection startWithGraphPath:@"/guide/feed" completionHandler:^(FBRequestConnection *connection,id result,NSError *error){ 
     NSDictionary *data = [result objectForKey:@"data"]; 

     for(NSDictionary *dic in data) { 

      if([dic objectForKey:@"description"]==nil){ 
       [self.desArr addObject:@""]; 
      }else{ 
       [self.desArr addObject:[dic objectForKey:@"description"]]; 
      } 


      if([dic objectForKey:@"object_id"]==nil){ 
       [self.udidArr addObject:@""]; 
      }else{ 
       [self.udidArr addObject:[dic objectForKey:@"object_id"]]; 
       [FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/%@",[dic objectForKey:@"object_id"]] completionHandler:^(FBRequestConnection *connection,id result,NSError *error) { 
        [self.imgDic setObject:[result objectForKey:@"images"] forKey:[result objectForKey:@"id"]]; 
        //NSLog(@"%@",[result objectForKey:@"id"]); 
        //NSLog(@"%@",[result objectForKey:@"images"]); 
        [self.tableView reloadData]; 
       }]; 
      } 

      if([dic objectForKey:@"message"]==nil){ 
       [self.mexArr addObject:@""]; 
      }else{ 
       [self.mexArr addObject:[dic objectForKey:@"message"]]; 
      } 


     } 

     [self.tableView reloadData]; 

    }]; 


} 


- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self loadData]; 
} 

ответ

1

Там нет прямого пути, используя/Me/фид, однако вы можете использовать Batch Request, чтобы получить все данные сразу.

Нечто подобное, отправленное в https://graph.facebook.com/v2.3/ в параметре batch, должно возвращать размер изображений.

[ 
    { 
     "method": "GET", 
     "name": "get-feed", 
     "relative_url": "me/feed" 
    }, 
    { 
     "method": "GET", 
     "relative_url": "?ids={result=get-feed:$.data.*.object_id}" 
    } 
] 
Смежные вопросы