Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在批更新删除时禁用NSFetchedResultsController生成的动画_Ios_Animation_Nsfetchedresultscontroller - Fatal编程技术网

Ios 在批更新删除时禁用NSFetchedResultsController生成的动画

Ios 在批更新删除时禁用NSFetchedResultsController生成的动画,ios,animation,nsfetchedresultscontroller,Ios,Animation,Nsfetchedresultscontroller,我目前正在使用NSFetchedResultsController在UITableView实例中显示内容 在某个时候,我在核心数据中执行批删除,然后执行批插入。因此,NSFetchedResultsControllerDelegate将逐个执行插入和删除操作。这给GUI带来了一种奇怪的外观,您可以看到行被逐个删除或插入 是否有可能实施 NSFetchedResultsControllerDelegate是否一次清除或插入一批行,而不是迭代执行 将NSFetchedResultsControlle

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

在某个时候,我在核心数据中执行批删除,然后执行批插入。因此,NSFetchedResultsControllerDelegate将逐个执行插入和删除操作。这给GUI带来了一种奇怪的外观,您可以看到行被逐个删除或插入

是否有可能实施 NSFetchedResultsControllerDelegate是否一次清除或插入一批行,而不是迭代执行

  • 将NSFetchedResultsController的委托设置为nil
  • 进行批处理更改吗
  • 使NSFetchedResultsController重新蚀刻其内容(即执行蚀刻:)
  • 将NSFetchedResultsController的委托设置回viewController
  • 重新加载tableView

  • 对于NSFetchedResultsController,我使用通常的惰性getter方法,因此我可以将其实例变量设置为nil,tableView重载将创建一个新的实例变量

    e、 g:

    // 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
    }