这应该是微不足道的,但我无法让它发挥作用。
我想在NSFetchedResultsControllerDelegate中的UITableView中移动一行。
我可以轻松删除行,但插入似乎不起作用(NSInternalInconsistencyException)。
我正在尝试
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let destinationindex = IndexPath(item: 0, section: 0)
tableView.deleteRows(at: [indexPath], with: .fade)
tableView.insertRows(at: [destinationindex], with: .fade)
}
我也试过
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let delobject = fetchedResultsController?.object(at: indexPath)
fetchedResultsController?.managedObjectContext.delete(delobject!)
fetchedResultsController?.managedObjectContext.insert(delobject!)
}
当然简单的删除工作;例如,滑动删除:
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
if (indexPath.row != 0) {
let delobject = fetchedResultsController?.object(at: indexPath)
fetchedResultsController?.managedObjectContext.delete(delobject!)
}
}
}
答案 0 :(得分:1)
您的数据模型必须符合tableView
,因此数据中的项目数等于tableView
中的行数。
基于FetchedResultsController
的{{1}}反映了CoreData抓取请求的结果。在TableView
中插入行意味着在CoreData中插入新条目。
这就是你想要做的:在Core Data中创建一个新条目(就像删除一行时一样)。