NSFetchResultsController,将新数据填充到表格视图中

Posted

技术标签:

【中文标题】NSFetchResultsController,将新数据填充到表格视图中【英文标题】:NSFetchResultsController, populate new data into the table view 【发布时间】:2013-01-31 14:17:36 【问题描述】:

我正在尝试实现UIRefreshControl的代码:

- (void)viewDidLoad

    [super viewDidLoad];
    UIRefreshControl *refreshController = [[UIRefreshControl alloc] init];
    [refreshController addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
    [self setRefreshControl:refreshController];


- (void)refresh:(id)sender

    NSLog(@"Freshing");
    //populate new data into the table view

我正在使用NSFetchResultsController。那么,如何将新数据填充到表格视图中呢?

【问题讨论】:

[self.tableView reloadData]; 就这样?谢谢,我试试看。 你的厕所..如果你有任何问题,请告诉我 【参考方案1】:

出奇的简单。 NSFetchedResultsController 负责为 table view 获取数据,所以:

[self.tableView reloadData]; 

如果您仍然获得“旧”数据,并且您按照 Apple 样板代码对获取的结果控制器进行延迟实例化,则在上面添加这一行:

self.fetchedResultsController = nil;

除了将其设置为 nil 之外,您还可以让现有的 FRC 再次执行其获取请求(这样更有效):

[self.fetchedResultsController performFetch:nil]; 

【讨论】:

我正在使用 UIRefreshController,我使用这些代码来执行刷新:NSError *error = nil; if ([self.fetchedResultsController performFetch:&error]) [self.tableView reloadData]; [(UIRefreshControl *)sender endRefreshing]; 但 endRefreshing 没有被调用。我如何确保我没有得到旧数据?【参考方案2】:

获取数据后你必须重新加载你的表

[yourTableView reloadData];

【讨论】:

以上是关于NSFetchResultsController,将新数据填充到表格视图中的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSFetchResultsController 时 UICollectionView 滚动不流畅

NSFetchResultsController,将新数据填充到表格视图中

NSFetchResultsController 委托没有被调用

NSFetchResultsController 委托没有被调用

NSFetchResultsController -controllerDidChangeContent: - 尝试使用 userInfo 为单元格创建两个动画

在 NSFetchResultsController 中派生节号