以下是我要处理的问题:

  • 我使用iOS Core Data永久存储信息

  • 我想(动态)在UITableView中显示存储在核心数据中的信息(如后所述)

  • 我正在考虑使用Core Data的Fetched Results Controller(FRC)和FRC Delegate,以便更有效地处理UI中永久存储的数据和更新之间的桥梁

我有一个Person实体,其名称为属性 . 我有两个从“人”到“就业实体”的“多对多”关系,以及指向两个“一对一”的反向关系,这样任何人都可以拥有任何数量(0到∞)的雇主和任何数字员工,同时:员工< - >>就业雇主< - >> employmentGiven每个就业都有一个等级(Int)属性,用于在订单中向用户显示一个人的雇主 - 如果有的话 - 由该人的每次就业产生的相对收入(每个收入水平随时可能变化)定义 . 为了跟踪UITableView中显示的人的程序,每个Employment还附带一个show(boolean)属性,其中true = show在表上,false =不显示在表上 .

我想在UITableView中列出人员,这样当用户按下aa时,在UITableView中根据Person的名称引入了很多行,这是显示Person的雇主所需要的,所以递归地(因为任何人都可以是雇主和雇员),最终视图是嵌套列表 .

示例如下:

初始UI状态:人员姓名1人员姓名2人员姓名3

...

用户按人2后的UI状态,假设人2同时适用于第4,5和6人:人名1人名2 * _人名4 * //第1人收入来源2 * ________人名5 * //按人数计算的第二收入来源2 * ________人名6 * //按人数分列的第三收入来源2 *人名3

我目前正在使用NSFetchedResultsController,获取所有具有 show = true 的工作并尝试使用两个键对它们进行排序:

let rank = NSSortDescriptor(key: #keyPath(Employment.rank), ascending: true)

let employee = NSSortDescriptor(key: #keyPath(Employment.employee), ascending: true)

(在单元格中显示Person的名称,我使用点表示法: employment.employer?.name

使用这些键不是所需的顺序,我试图弄清楚我是否可以使用 sortDescriptor 和FRC进行正确的排序 .

我应该使用FRC还是只创建一个数组数组并编写一些额外的代码来自己更新UI?

(我对编码仍然有点新鲜,任何帮助都会非常感激!)