UITableView显示第一行的(null)

时间:2011-10-23 01:45:42

标签: objective-c uitableview core-data

我正在使用CoreData更新UITableView。在启动时,第一行显示为(null)。如果我向下/向上滚动,它会加载。它最初没有显示。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        [cell setAccessoryType: UITableViewCellAccessoryDisclosureIndicator];
    }

    // set text for each cell
    [cell.textLabel setText: [dataManager getProjectValueForKey: @"Title" atIndex: [indexPath row]]];
    [cell.detailTextLabel setText: [[[dataManager getProjectValueForKey: @"pid" atIndex:[indexPath row]] stringByAppendingString: @": "] stringByAppendingString: [dataManager getProjectValueForKey: @"Sponsor" atIndex:[indexPath row]]]];

    return cell;
}

dataManager正在与Core Data交谈。我觉得它可能在启动时落后或有什么东西,所以单元格在准备好之前试图显示数据。但我不知道。

1 个答案:

答案 0 :(得分:1)

实际上,核心数据中已经内置了一个很棒的“dataManager”。它被称为NSFetchedResultsController。您始终可以使用

为表格单元格检索正确的数据对象
[[self.fetchedResultsController fetchedObjects] objectAtIndex:indexPath.row];

这通常在tableView:cellForRowAtIndexPath:内完成,而不是在其他辅助函数中完成。获取的结果控制器将处理检索显示它所需的数据所需的所有内容。

另请参阅Apple针对此常见设计模式的众多核心数据代码示例。