SwiftUI перемещает ячейки списка и заполняет порядок в базе данных CoreData - PullRequest
0 голосов
/ 05 августа 2020

У меня проблема с перемещением ячеек и сохранением порядка в базе данных CoreData. У меня есть переход с точки зрения пользовательского интерфейса, но я не могу понять, как отразить его в основных данных. Сущности перемещенного списка имеют атрибут orderPriority в CoreData, это значение Int, которое я хотел бы изменить при перемещении.

Метод перемещения, прикрепленный к списку, выглядит следующим образом:

func move(from source: IndexSet, to destination: Int)

Это похоже на источник и пункт назначения - это две разные вещи, например, перемещение первой ячейки в третью позицию дает источник = 0 и пункт назначения = 3, но перемещение третьей ячейки в первую позицию дает источник = 2 и пункт назначения = 0, при этом только 3 элемента в пункте назначения массива не имеют смысла для меня.

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

Я что-то делаю неправильно?

1 Ответ

1 голос
/ 05 августа 2020

... но перемещение третьей ячейки в первую позицию дает source = 2 и destination = 0, только с 3 элементами в целевом массиве для меня не имеет смысла.

Индексы массива начать с нуля, source = 2 - это 3-й элемент, а destination = 0 - 1-й элемент. Индекс 2 становится 0, индекс 0 становится 1, а индекс 1 становится 2.

Кстати, тип источника - IndexSet, вы можете переместить несколько элементов с непоследовательными индексами в назначение index.

По умолчанию записи Core Data неупорядочены. Если у вас есть атрибут индекса в сущности, вам необходимо повторно проиндексировать записи, по крайней мере, из первого индекса, который был изменен.

...