iphone SDK: произвольное изменение порядка строк таблицы с основными данными - PullRequest
0 голосов
/ 07 июля 2010

Каков наилучший способ реализации произвольного переупорядочения строк в табличном представлении, использующем данные ядра?Подход, который кажется мне очевидным, заключается в добавлении атрибута rowOrder типа Int16 к сущности, которая переупорядочивается в табличном представлении, и ручной итерации по сущности, обновляющей атрибуты rowOrder всех строк, когда пользователь завершает переупорядочение.

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

Ответы [ 2 ]

1 голос
/ 08 июля 2010

Если упорядочение - это то, что модель данных должна модально хранить и хранить, то упорядочение должно быть частью графа сущностей в любом случае.

Хорошим, легким решением является создание Order объекта, который имеет отношение один к одному с фактическим заказываемым объектом.Чтобы упростить обновление, создайте связанный список, подобный структуре объектов.Примерно так:

Order{
    order:int;
    orderedObject<--(required,nullify)-->OrderObject.order
    previous<--(optional,nullify)-->Order.next;
    next<--(optional,nullify)-->Order.previous;
}

Если вы создаете пользовательский подкласс, вы можете предоставить метод insert, который вставляет новый объект в цепочку, а затем отправляет сообщение по отношениям next и сообщает каждомуОбъект увеличивает свой порядок на единицу, а затем сообщение на следующий.delete метод делает противоположное.Это делает упорядочение неотъемлемой частью модели и хорошо инкапсулировано.Для этого легко создать базовый класс, чтобы вы могли использовать его по мере необходимости.

Большим преимуществом является то, что для этого требуется, чтобы только маленькие Order объекты были в живых в памяти.

Редактировать:

Конечно, вы можете расширить это с помощью другого связанного объекта для предоставления информации раздела.Просто свяжите эту сущность с сущностью Order, затем укажите номер заказа, указанный в разделе.

0 голосов
/ 07 июля 2010

Нет лучшего пути, и это - принятое решение. Базовые данные не имеют внутреннего порядка строк, поэтому вам нужно сделать это самостоятельно. Однако кода на самом деле не много.

...