我有一个非常标准的NSFetchedResultsController
(或NSFRC);
NSDate
字段(降序)接下来数据会更新:
NSFRC
很好地将更改传递给TableView,除了订单更改。 reloadData()
,数据更改,则订单不会。我希望委托例如交换第一行和第二行,因为第二行的日期值现在高于第一行。
如果我重新打开ViewController(因此在新VC和NSFRC
上再次完成提取),订单会按预期更改。但这对用户来说只是直观的。
有人可以请我指出可能的地方来搜索我的错误吗?
重申:
这是两个截图,第二行(日期)也是排序顺序。第二个图像显示更新的数据,但排序顺序错误。
答案 0 :(得分:-1)
当您的数据发生变化时,您可能需要使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