Создайте NSFetchedResultsController, управляющий объектами со многими отношениями ко многим - PullRequest
0 голосов
/ 14 апреля 2011

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

Project сущность имеет project name.

Employee сущность имеет First name, last name, departmentid number.

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

Проект 1
Dept1
-первое имя1, фамилия1
-firstname2, lastname2
отдел 2
имя3, фамилия3
firstname4, lastname4
Проект 2
Dept1
-первое имя1, фамилия1

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

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

Ответы [ 2 ]

0 голосов
/ 15 апреля 2011

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

0 голосов
/ 14 апреля 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...