ios - 使用 UIDiffableDataSource TableView 删除项目时,不会调用 NFetchedResultsController 委托(delegate)方法 didChangeContentWith

标签 ios swift nsfetchedresultscontroller diffabledatasource nsdiffabledatasourcesnapshot

我正在尝试使用 UITableViewDiffableDataSource 实现现有的 coredata 项目。我的 TableView 使用 NSFetchedResultsController 和相应的委托(delegate)方法进行耦合。 我可以使用 diffabledatasource 在 TableView 中列出数据。我的数据源使用如下泛型类型声明

UITableViewDiffableDataSource<String, NSManagedObjectID>

为了在表格 View 中启用编辑模式,我对 UITableViewDiffableDataSource 进行了子类化。我可以从表格 View 中删除单元格,但不能从我的 coreData 中删除单元格。删除单元格的代码如下

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
  if editingStyle == .delete {
     if let identifierToDelete = itemIdentifier(for: indexPath){
        var snapshot = self.snapshot()
        snapshot.deleteItems([identifierToDelete])
        apply(snapshot)
     }
  }}

当我删除单元格时,不会调用下面的 NSFetchedResultsControllerDelegate 方法。

func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) 

我不确定这是否是将 diffabledatasource 与 NSFetchedResultscontroller 耦合的正确方法。任何帮助将不胜感激。提前致谢

最佳答案

而不是在UITableViewDiffableDataSource中重写tableView(_:commit:)实现

override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { ...

在 View Controller 中,通过索引路径从获取结果 Controller 获取对象。

关于ios - 使用 UIDiffableDataSource TableView 删除项目时,不会调用 NFetchedResultsController 委托(delegate)方法 didChangeContentWith,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59018464/

相关文章:

ios - 在 Swift 4 中从计算变量创建关键路径

ios - 有没有办法与 SLComposeViewController fb 和 twitter 分享视频

ios - 为同一个新对象多次调用 Firebase FEventTypeChildAdded 回调

ios - UITableview 到带图像的单元格详细信息

ios - 我不再使用的库在启动时使应用程序崩溃。如何彻底去除? Xcode/swift

iphone - 完全关闭应用程序时核心数据删除问题

ios - 如何使用 Facebook iOS SDK 管理生产和开发凭证

ios - Facebook Graph Api的位置连接用户对象在ios-sdk中无法正确响应?

swift - 从x点快速获取图像高度

ios - NSFetchRequest - 包括未决更改