swift - 使用 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()
}
编辑:不幸的是,将重新加载数据功能移动到保存上下文之后并不能解决问题。
解决方案
尝试交换tableView.reloadData()
和CoreDataStack.shared.saveContext()
.
Core Data 仅在您保存托管对象上下文时才完全提交您的更改,因此当 tableView 重新加载时,您可能仍会获得旧的排序。
推荐阅读
- android - ML Kit 人脸检测 ML 模型大小在 Android 上
- benchmarking - 如何在堆栈的 package.yaml 中指定每个基准参数?
- django - 如果导入未设置为全局,Django shell 上的 Python 脚本看不到导入?
- php - 处理注册请求的路由返回 404
- c++ - 指针和类,输出
- c++ - 带有模板的结构和函数
- c# - 如何断言已将扩展名更改为 csv 的 exe 文件实际上是 csv 文件 c#
- python - 如何从whatsapp web 上抓取数据
- javascript - 如何从 JS 浏览器客户端使不可流式传输的 mp4 流式传输?
- r - R - 评估存储在 data.table 列中的函数