UITableView показывает (ноль) для первой строки - PullRequest
0 голосов
/ 23 октября 2011

Я обновляю UITableView с CoreData.При запуске первая строка отображается как (ноль).Если я прокручиваю вниз / вверх, он загружается.Это просто не показывает изначально.

- (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 - это то, что говорит с базовыми данными.Я чувствую, что это может отставать или что-то отстать при запуске, поэтому ячейка пытается показать данные, прежде чем она будет готова.Но я не знаю.

1 Ответ

1 голос
/ 23 октября 2011

На самом деле, существует отличный «dataManager», уже встроенный в Core Data.Это называется NSFetchedResultsController.Вы всегда можете получить правильный объект данных для ячейки таблицы с помощью

[[self.fetchedResultsController fetchedObjects] objectAtIndex:indexPath.row];

Это обычно делается внутри tableView:cellForRowAtIndexPath:, а не в какой-либо другой вспомогательной функции.Контроллер полученных результатов позаботится обо всем, что необходимо для извлечения данных, необходимых для их отображения.

См. Также многочисленные примеры кода Core Data от Apple для этого общего шаблона проектирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...