Создайте управляющие объекты NSFetchedResultsController с отношениями «многие ко многим».

У меня есть объект с именем Project и другой объект с именем Employee. Сотрудники работают над несколькими проектами.

Project объект имеет project name.

Employee объект имеет First name, last name, departmentid number.

Я хочу, чтобы данные отображались в таблице заголовков разделов, как это

Проект 1
Отдел1
-имя1, фамилия1
-имя2,фамилия2
отдел 2
имя3, фамилия3
имя4,фамилия4
Проект 2
Отдел1
- имя1,фамилия1

Как я могу это сделать? Мне не нужно отображать названия отделов, но они должны быть отсортированы таким образом.

Я использую Core Data & UITableView. Мне нужно построить NSFetchResultsController для этого.


person user667673    schedule 14.04.2011    source источник
comment
Предполагалось ли, что примеры заголовков разделов будут отформатированы как схема, или вы предполагали, что все они будут одной строкой.   -  person TechZen    schedule 14.04.2011


Ответы (2)


Я думаю, что корень вашего вопроса исходит из того факта, что отношение ко многим приводит к NSSet, когда вы получаете к нему доступ из объекта отношения from (т.е.: Project->Employees - приводит к NSSet сотрудников). NSSets, конечно, неупорядочены.

И ответ таков:

Вам нужно будет отсортировать NSSets ваших сотрудников вручную. Я предлагаю вам преобразовать NSSet в NSMutableArray, а затем использовать -sortUsingBlock: или что-то в этом роде, чтобы сделать это. Чтобы вам не приходилось пересортировывать его каждый раз, когда он вам нужен, сохраните его как переменную-член вашего класса Project. При этом должно быть довольно легко создать его лениво и пересортировать только при изменении набора данных, что будет лучше для производительности.

Вы МОЖЕТЕ сделать что-то с подзапросом в Core Data... но я думаю, вы можете обнаружить, что это будет попадать на диск чаще, чем вам хотелось бы. (Просто предположение) Техника, которую я предложил выше, немного менее магическая, немного более грубая, но она сработает, и вы всегда будете точно знать, как она себя ведет.

person Jiva DeVoe    schedule 14.04.2011

Используйте fetchedResultsController для получения объектов «Проект», и вы сможете получить доступ и отобразить Employee NSSet в ваших методах источника данных tableview через их отношения.

person Rog    schedule 14.04.2011