NSFetchedResultsController的顺序应该不会改变

我有一个NSFetchedResultsController (或NSFRC)这确实是非常标准的;

  • 没有谓词集
  • 获取一个实体类型的所有项目
  • NSDate字段排序(降序)
  • 代表已设置
  • 数据被提取
  • 接下来数据得到更新:

  • 后台线程更新数据
  • 排序顺序中使用的字段与其他字段之间发生更改。
  • 这些更改被合并到主线程的ObjectContext中
  • NSFRC很好地将更改传递给TableView, 除了顺序更改
  • 如果我更改动画效果并不重要,或者只是执行reloadData() ,数据更改,则顺序不变。
  • 我希望代表例如交换第一和第二行,因为第二行的日期值现在高于第一行。

    如果我重新打开ViewController(因此在新的VC和NSFRC上再次执行提取操作),顺序会按预期更改。 但那对用户来说只有直觉。

    任何人都可以请指点我到可能的地方去寻找我的错误吗?

    只是重申一下:

  • 对内容的更改正在被委托,即另一个字段包含文本,该文本会被更改。
  • 订单没有被更改。 所以看起来SortOrder仅在第一次获取时才使用。

  • 这里有两个截图,第二行(日期)也是排序顺序。 第二张图片显示更新的数据,但排序顺序错误。

    之前

    数据更新之前的情况

    数据更新后的情况


    当你的数据发生变化时,你可能需要NSFRC并让它做到这一点。 例如。 可以说,你有一个功能可以改变你的物品的顺序。 如果你使用标准的Apple代码,你应该有这样的东西

    func updateSort () {
    
        _fetchedResultsController = nil //Here is the magic
        tableView.reloadData()
    }
    
    // MARK: - Core Data
    var fetchedResultsController:NSFetchedResultsController {
        if _fetchedResultsController != nil {
            return _fetchedResultsController!
        }
    
        // do your basic initialization and set the delegate and return it
    
        return _fetchedResultsController!
    
    }
    
     var _fetchedResultsController: NSFetchedResultsController? = nil
    
    链接地址: http://www.djcxy.com/p/36159.html

    上一篇: NSFetchedResultsController order not changed when it should

    下一篇: Using NSFetchedResultsController to return objects with ordered relationships