gpt4 book ai didi

ios - 在批量更新删除时禁用 NSFetchedResultsController 生成的动画

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:26:27 24 4
gpt4 key购买 nike

我目前正在使用 NSFetchedResultsController 在 UITableView 实例中显示内容。

有时,我在 Core Data 中进行批量删除,然后进行批量插入。结果,NSFetchedResultsControllerDelegate 一个一个地进行插入和删除。这给 GUI 带来了一种奇怪的外观,您可以从字面上看到一行一行地被删除或插入。

是否可以实现NSFetchedResultsControllerDelegate 一次性清除或插入一批行,而不是迭代地进行?

最佳答案

  1. 将 NSFetchedResultsController 的委托(delegate)设置为 nil
  2. 进行批量更改
  3. 使 NSFetchedResultsController 重新获取其内容(即 performFetch:)
  4. 将 NSFetchedResultsController 的委托(delegate)设置回您的 viewController
  5. 重新加载表格 View

我对我的 NSFetchedResultsController 使用通常的惰性 getter 方法,所以我可以将它的实例变量设置为 nil,tableView 重新加载将创建一个新的。

例如:

// returns a NSFetchedResultsController that has performed its fetch
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController) {
return _fetchedResultsController;
}
_fetchedResultsController = [NSFetchedResultsController alloc] initWith...
if (![_fetchedResultsController performFetch:&error]) {
...
}
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}

- (void)batchRequestWithoutAnimation {
_fetchedResultsController.delegate = nil;
// mass insert/delete
_fetchedResultsController = nil;
[self.tableView reloadData]; // tableView dataSource methods call
// [self fetchedResultsController],
// which will create a new one
}

关于ios - 在批量更新删除时禁用 NSFetchedResultsController 生成的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28974876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com