При использовании контроллера результатов выборки (FRC) с табличным представлением вы устанавливаете для объекта выборки тот объект, который будет заполнять строки.В конце концов, разделы являются необязательными, но строки всегда требуются.
Первое, что вам нужно сделать, это установить взаимные отношения в вашей модели данных следующим образом:
Parent<-->>Child<-->>GrandChild
... это позволяет вам пересечь объект, начиная с любой сущности, например, еслиу вас есть объект Grandchild, вы используете путь к ключу parentChild.parent (или как вы называете отношения) для достижения связанного объекта Parent
путем прохождения объекта Child
.
Чтобы настроить представление таблицы по своему усмотрению, вы должны установить для объекта выборки значение GrandChild
, для предиката что-то вроде parentChild.parent.id=%@
, а затем для FRC sectionNameKeyPath
установить значение parentChild.name
.
Однако вы, вероятно, хотите переосмыслить весь свой дизайн.Более простая модель данных для древовидной структуры была бы:
Person{
name:string
id:number
parent<<-->Person.children
children<-->>Person.parent
}
Внуком, являющимся ребенком, два хода вниз, а дедушкой - родителем два хода вверх.Если у вас есть какой-то конкретный объект Person
, отображение в виде таблицы будет тривиальным.Имена разделов будут представлять собой отсортированный массив отношений 'children', а строки - это отсортированные массивы собственных дочерних элементов каждого ребенка.
Вам бы вообще пришлось возиться с заловами.