几周前,我开始使用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调用无效。使用调试器进行检查。

如果不是这种情况,我们需要更多信息。使用调试器遍历代码,并检查每个表视图数据源方法是否被调用,以及处理在哪里出错。

10-08 05:47