【问题标题】:NSFetchResultsController, populate new data into the table viewNSFetchResultsController,将新数据填充到表格视图中
【发布时间】: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];
  • 就这样?谢谢,我试试看。
  • 你的厕所..如果你有任何问题,请告诉我

标签: iphone ios core-data tableview uirefreshcontrol


【解决方案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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多