NSFetchedResultsController и несколько отношений - PullRequest
0 голосов
/ 02 июня 2011

У меня есть UITableView, который отображает исторические данные.Это разбито на один раздел в день.Каждый день может происходить несколько вещей (например, в течение определенного дня я спал, ел пищу, делал упражнения и т. Д.).Каждая «вещь» представлена ​​другой сущностью.Исходя из предыдущего примера, у меня есть сущности Day, Sleep, Food и Exercise.Sleep, Food и Exercise все имеют сущность Day в качестве родителя через отношения один ко многим.

В настоящее время я загружаю все сущности Day, затем для каждого дня я буду загружать Sleep, Еда и Упражнения объединяются в один массив и сортируют его по дате.Само собой разумеется, что это происходит медленно, когда имеется много данных.

Возможно ли в этом случае использовать NSFetchedResultsController?

1 Ответ

0 голосов
/ 02 июня 2011

Это всего лишь предположение, но я думаю, что сработает следующее:

РЕДАКТИРОВАТЬ - я только что проверил с простым делом, что это работает

Пусть все ваши сущности событий (Sleep, Food, Exercise) наследуются от сущности базового класса (вы могли бы назвать это чем-то вроде «Event»), а затем используйте следующее при настройке NSFetchRequest, который будет использовать ваш NSFetchedResultsController :

NSFetchRequest *fr = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:_managedObjectContext];
[fr setEntity:entity];

Теоретически, это может привести к тому, что ваш контроллер результатов выдаст все ваши существующие сущности, которые наследуются от Событие . Вы также можете поместить отношение в Day в базовом классе (Event), потому что все ваши подклассы имеют это общее. Кроме того, вам нужно будет указать предикат для запроса на выборку, чтобы захватывать события только в определенный день, за которым вы следите.

Дайте мне знать, если это работает!

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