Я размышлял, как лучше заказать набор управляемых объектов Core Data, и я хотел бы выдвинуть идею, которую я раньше не видел, в надежде, что кто-то с большим опытом работы с CompSci сможет сказать мне, если / почему это плохая идея: можем ли мы использовать плавающие элементы для упорядочивания управляемых объектов Core Data?
Ситуация такова:
Для простоты, скажем, в школе много учителей.
Школа >> Учитель
Как правило, порядок Учителей останется прежним (1, 2, 3, 4, 5), но иногда я, например, захочу переместить Учителя № 5 между Учителем 1 и Учителем 2.
Обычный способ создания индекса с использованием целых чисел означал бы, что мне нужно будет переупорядочить четыре из пяти моделей. Что мне интересно, так это то, что если бы я использовал поплавок для заказа моделей? Затем для наших пяти моделей Учителей они начнутся так:
</p>
<p>t1.order = 1.0;</p>
<p>t2.order = 2.0;</p>
<p>t3.order = 3.0;</p>
<p>t4.order = 4.0;</p>
<p>t5.order = 5.0;</p>
<p>
И когда я хочу переместить t5 между t1 и t2, я выполняю эту операцию:
t5.order = ( t1.order + t2.order ) / 2.0;
Итак, новый список выглядит так:
</p>
<p>t1.order = 1.0;</p>
<p>t5.order = 1.5;</p>
<p>t2.order = 2.0;</p>
<p>t3.order = 3.0;</p>
<p>t4.order = 4.0;</p>
<p>
Теперь мой список отсортирован так, как я хочу, и мне нужно было обновить только одну запись. Я даже могу переместить t3 между t5 и t2:
t3.order = ( t5.order + t2.order ) / 2.0;
</p>
<p>t1.order = 1.0;</p>
<p>t5.order = 1.5;</p>
<p>t3.order = 1.75;</p>
<p>t2.order = 2.0;</p>
<p>t4.order = 4.0;</p>
<p>
Должна быть причина, почему это не способ . Конечно, когда вы сортируете, сортируете и сортируете, вы в конечном итоге получите очень длинные числа с плавающей запятой и, возможно, в какой-то момент погаснет точность, но время от времени вы можете сбросить порядок на 1.0, 2.0, 3.0. .n.0.
Может кто-нибудь отговорить меня от этого?