Самый простой способ сделать заказ - убедиться, что ваша сущность точно моделирует данные, которые действительно нужны пользователю.Помните, Core Data не является системой баз данных.Это система управления графами объектов с опциями сохранения.Объекты имеют поведение.Это означает, что вы можете поместить гораздо больше информации в Базовые Данные, чем обычно, просто для базы данных.
Большую часть времени упорядочение происходит естественным образом благодаря хорошему дизайну сущностей.Например, пользователь должен упорядочить объекты Foo по тому времени, когда они были добавлены на график.Следовательно, объект Foo нуждается в атрибуте creationDate
.Просто привяжите дескриптор сортировки к атрибуту creationDate
, и все готово.
Самая большая проблема - произвольный порядок, который не имеет ничего общего с моделируемыми данными.Мне нравится решать эту проблему с помощью легкого Order
объекта, который относится к фактически заказанному объекту.
Foo{
name:string
creationDate:date
order<-->Order.foo
}
Order{
foo<-->Foo.order
previous<-->Order.next
next<-->Order.previous
}
Как видите, сущности Order
функционируют как старый список связанных школ.Чтобы вставить в объект новый объект Foo
, просто вставьте новый связанный объект Order
между существующими объектами Order
.Чтобы создать упорядоченный список, просто начните с объекта Order
, атрибут которого previous
равен nil, а затем пройдитесь по отношениям next
, вытягивая каждое отношение foo
по мере прохождения.
Есть и другие варианты.
Но опять же, дизайн сущностей всегда лучший.Сущность предназначена для моделирования / симуляции реального объекта, события или состояния.Если вы думаете о реальных вещах, которые хотите смоделировать, а затем включаете их в графы объектов и объектов, то довольно часто ваш порядок происходит естественным образом.