Базовые данные, обход «сортировка по временным свойствам» - PullRequest
11 голосов
/ 05 мая 2011

Допустим, у меня есть сущность Core Data под названием Event, которая представляет повторяющиеся (ежегодные) события.Каждое событие имеет свойство "date".

Мне нужно представить это событие пользователю, отсортированному по "следующему вхождению даты".Это свойство, конечно, зависит от текущей даты и поэтому должно быть помечено как transient : нет смысла хранить его в базе данных.

Но, как вы знаете, вы можетесортировать запросы по временному свойству в Core Data.

Есть ли разумный способ сохранить это свойство временным и при этом иметь сортировку Core Data для меня?Я не хочу получать и затем сортировать себя, но я также хотел бы избежать сохранения этой временной информации в базе данных.

1 Ответ

5 голосов
/ 05 мая 2011

Если вы храните дату в отдельном объекте, вы можете выбрать только даты и отсортировать их самостоятельно, как вам нравится.У вас будет связь между Event и EventDate и соответствующая обратная связь, которая позволит вам найти событие по заданной EventDate.

Предложение. Укажите дескриптор сортировки в запросе на выборку, чтобы получить отсортированные даты.с начала года.Затем все, что вам нужно сделать, это найти текущую дату в возвращаемом массиве и переместить все до этой точки в конец массива.

Создайте отношение EventDate-> Event ко многим, поскольку это может произойтичто более одного события приходится на одну и ту же дату.Настройка вашей модели таким образом дает вам прекрасное свойство, с помощью которого вы можете легко ответить на вопрос «Какие события происходят в день X?»

...