TableView订单最初不正确,但在重新启动应用程序时更新?

时间:2017-12-16 15:02:43

标签: ios uitableview sorting core-data nsfetchedresultscontroller

我只使用一个viewController来添加任务然后显示它。我使用NSFetchedResultsController从coreData获取。我也在使用NSSortDescriptor根据优先级对任务进行排序。

现在问题就出现了,我按了一个' +'按钮和带键盘的textview出现。我写了一个任务,然后按添加。通过这样做,我将对象保存在coreData中。在后面有一个更新的tableview,但顺序不正确。例如,如果第一项任务是“任务1”和“任务1”。然后第二个任务说任务2','任务2'出现在任务1'的顶部,但是当我重新启动应用程序时,task2显示在task1下面应该是什么。

当您添加许多具有不同优先级的任务时,会优先考虑优先级排序,但订单遍布该优先级内的所有位置。重新启动应用程序会修复它。

我希望tableview能够正确更新。我究竟做错了什么?以下是一些代码段:

添加数据时插入新行。

func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
    tableView.beginUpdates()
}

func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) {
    switch type {

    case .delete:
        tableView.deleteRows(at: [indexPath!], with: .fade)
    case .insert:
        tableView.insertRows(at: [newIndexPath as! IndexPath], with: UITableViewRowAnimation.automatic)

    default:
        return

    }
}

func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
    tableView.endUpdates()

}

注意&#39;低7&#39;是在蓝色优先区域,但不在低6&#39;低。当我重新启动应用程序时它就到了那里

在第二张照片中,中等6,7,8以上。重新启动应用程序将使他们处于中等5。

enter image description here enter image description here

0 个答案:

没有答案