我仍在学习目标 C,我的UITableViewController遇到了一些奇怪的问题。它由 CoreData 填充,我正在使用斯坦福大学的CoreDataTableViewController类。
当应用程序首次加载时,表格看起来好像正在填充,因为所有可见行都在显示数据。该表具有与 Core Data 中的行数匹配的正确行数,但是当我滚动表视图时,下面的单元格是空白的,然后如果我向上滚动到表视图的顶部,原始单元格,即填充也是空白的。我不是什么工作,因为它最初显示一些数据..
谢谢
这是代码:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [_fetchedResultsController.fetchedObjects count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"InfoCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UserAccount *account = [_fetchedResultsController objectAtIndexPath:indexPath];
UILabel *titleLabel = (UILabel *)[cell viewWithTag:1000];
UILabel *descriptionLabel = (UILabel *)[cell viewWithTag:1001];
titleLabel.text = account.title;
descriptionLabel.text = account.detail;
return cell;
}
我的 viewWillAppear 调用了这个函数:
- (void)setupFetchedResultsController
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"UserAccount"];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"title"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)]];
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:_managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
[self performFetch];
}