Uitableview 使用NSFetchedResultsControllerdelegate插入行

Uitableview 使用NSFetchedResultsControllerdelegate插入行,uitableview,core-data,swift3,Uitableview,Core Data,Swift3,这应该是微不足道的,但我不能让它工作 我想在NSFetchedResultsControllerDelegate的UITableView中移动一行 我可以很容易地删除行,但在InternalInconsistencyException中插入似乎不起作用 我正在努力 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let destinationindex = I

这应该是微不足道的,但我不能让它工作

我想在NSFetchedResultsControllerDelegate的UITableView中移动一行

我可以很容易地删除行,但在InternalInconsistencyException中插入似乎不起作用

我正在努力

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!)
        }
    }
}

您的数据模型必须适合tableView,以便数据中的项目数等于tableView中的行数

基于FetchedResultsController的TableView反映CoreData获取请求的结果。在UITableView中插入一行意味着在CoreData中插入一个新条目


这就是您想要做的:在核心数据中创建一个新条目,就像您在删除一行时已经做的那样。

我确实尝试过这样的操作-如果我删除了一行,并立即插入它,我不希望它只是删除。但是下面的代码只是让delobject=fetchedResultsController?.objectat:indexPath fetchedResultsController?.managedObjectContext.DeletedObject!fetchedResultsController?.managedObjectContext.insertdelobject!您不会删除delobject。为了便于理解,请首先在didSelectRow中的CoreData中创建一个新对象。如果我删除并插入,所发生的只是行删除未插入。您必须在FetchedResutlControllerDelegate方法中处理此问题。可能会有帮助。找到了一个-这就是我删除的原因。但无法确定如何插入still。。。