Назначение двух отношений CoreData (с обратными отношениями) одной и той же сущности - PullRequest
3 голосов
/ 23 февраля 2011

В моей модели CoreData у меня есть объект Event , который связан с конкретными объектами Activity .В настоящее время у меня есть необязательное отношение между Событие и Активность , называемое LatestActivity .Сейчас я пытаюсь создать новые отношения специально для NextActivity , но понимаю, что невозможно установить обратное для обоих отношений одну и ту же сущность.

Я понимаю, почему это невозможноиз-за бэк-магазина SQlite, но мне интересно, как лучше это сделать.После небольшого поиска в Google лучшее решение, которое я видел, заключается в следующем: настройте отношение один-ко-многим, называемое Деятельности внутри моей сущности Событие , а затем настройте вспомогательные функции для выборки.и возвращать последние и последующие действия.

Это хорошо, поскольку позволяет мне присоединять несколько действий к событиям в будущем, но я не совсем понимаю, где и как реализовать эти вспомогательные функции.Следующие и последние события будут получены путем сравнения NSDate в сущности Activity с использованием следующей логики:

  • Последняя операция представляет собой самую последнюю дату перед текущей датой.
  • Следующее действие представляет следующее действие с датой больше, чем сейчас

Но каков самый чистый способ поиска в CoreData этих сущностей, и где я должен выполнить этот поиск?

1 Ответ

3 голосов
/ 24 февраля 2011

Я могу не понимать вас, когда вы говорите, что «понимаете, что невозможно установить обратное для обоих отношений одну и ту же сущность». Рассмотрим эту модель:

enter image description here

Понятно, что возможно иметь несколько двунаправленных отношений между двумя объектами. В этом случае существует три двунаправленных отношения:

  1. Мероприятия мероприятия <- >> Мероприятие мероприятия (что для многих с точки зрения события)
  2. Событие lastActivity <-> Деятельность inverseLastActivity
  3. Событие nextActivity <-> Деятельность inverseNextActivity

Конечно, вам по-прежнему необходимо обновлять lastActivity и nextActivity - и, возможно, ваше предложение определить, что в реальном времени может быть более надежным.

У меня сохраняется беспокойство, что я неправильно понял ваш вопрос ...

...