几周前,我开始使用IOS和Graph Api。我在用从Facebook检索的相册数据填充UITableView时遇到问题。我也将自己的uitabledatasource和uitabledelegate做为appdelegete,在用户登录后也发出了以下请求:
NSString* fql = [NSString stringWithString:@"select object_id, cover_object_id, name, description from album where can_upload=1 and owner=me ()"];
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObject:fql forKey:@"query"];
[facebook requestWithMethodName:@"fql.query" andParams:params andHttpMethod:@"GET" andDelegate:self];
[theTable reloadData];
我在表格中实现了以下内容:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.resultData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease];
}
NSUInteger row = [indexPath row]; cell.textLabel.text = [[self.resultData objectAtIndex:row] valueForKey:@"name"];
NSLog(@"the name %@", [[self.resultData objectAtIndex:row] valueForKey:@"name"]);
return cell;
}
并管理这样的结果:
- (void)request:(FBRequest *)request didLoad:(id)result {
if ([result isKindOfClass:[NSArray class]]) {
resultData=result;
[theTable reloadData];
}
NSLog(@"Result of API call: %@", result);
}
我得到正确的查询结果,但是表从不重新加载数据,因此它始终为空
最佳答案
首先,您需要将resultData
保留在request:didLoad:
中(使用setter方法!)。
其次,您应该检查表是否根本不尝试重新加载数据,或者表视图数据源方法中的某些内容是否出错。如果是前者,则theTable
实际上可能是nil
中的request:didLoad:
,因此reloadData
调用无效。使用调试器进行检查。
如果不是这种情况,我们需要更多信息。使用调试器遍历代码,并检查每个表视图数据源方法是否被调用,以及处理在哪里出错。