How to switch UITableView's NSFetchedResultsController (or its predicate) programmatically?

前端 未结 4 884
故里飘歌
故里飘歌 2020-12-08 17:43

I have a UITableView that displays a subset of a large number of entities named \"Documents\". The subset is defined by another entity \"Selection\". Selections are named, o

4条回答
  •  半阙折子戏
    2020-12-08 18:26

    Since NSFetchedResultsController(FRC) is an object, you can store instances of it like any other object.

    One useful technique is to initialize and store several FRC in a dictionary and then set the tableview controller's fetchedResultController attribute to the FRC you need at the moment. This is useful for situations such as having a segmented control to sort on different attributes or entities in the same table. This technique has the advantage of maintaining the individual FRC caches which can speed fetches up significantly.

    Just make sure to send the tableview itself a beginUpdates before you swap controllers and then an endUpdates when you are done. This prevents the table from asking for data in the narrow window when the FRC are being swapped out. Then call reloadData.

提交回复
热议问题