首页 > 解决方案 > 使用 NSFetchedResultsController (Swift) 移动行

问题描述

为什么这行不通?当 tableview 重新加载数据时,对象会移动到它们的原始位置

override func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {

    var objects = myFetchRC.fetchedObjects!

    let object = myFetchRC.object(at: sourceIndexPath)
    objects.remove(at: sourceIndexPath.row)
    objects.insert(object, at: destinationIndexPath.row)

    CoreDataStack.shared.saveContext()

    tableView.reloadData()


}

编辑:不幸的是,将重新加载数据功能移动到保存上下文之后并不能解决问题。

标签: swiftcore-datatableviewnsfetchedresultscontrollerreloaddata

解决方案


尝试交换tableView.reloadData()CoreDataStack.shared.saveContext().

Core Data 仅在您保存托管对象上下文时才完全提交您的更改,因此当 tableView 重新加载时,您可能仍会获得旧的排序。


推荐阅读