SwiftUI 移动列表单元格并在 CoreData 数据库中填充顺序

SwiftUI move list cells and populate order in CoreData database

我在移动单元格并将订单保存到 CoreData 数据库时遇到问题。我已经从 UI 的角度开始工作,但我不明白如何在核心数据中反映它。移动的列表实体在 CoreData 中具有 orderPriority 属性,它是一个 Int 我想在移动操作中更改。

附加到列表的移动方法是这样的:

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

源和目标似乎是两个不同的东西,例如 将第一个单元格移动到第三个位置给出 source=0 和 destination=3,但是 将第三个单元格移动到第一个位置给出 source=2 和 destination=0,数组目标中只有 3 个元素对我来说毫无意义。

源看起来像数组索引,但目标是我无法理解的,这就是我无法将核心数据实体更改为相应顺序的原因。

我是不是做错了什么?

... but moving third cell to first position gives source=2 and destination=0, with only 3 elements in the array destination makes no sense to me.

数组索引从零开始,source=2 是第三个元素,destination=0 是第一个元素。索引 2 变为 0,索引 0 变为 1,索引 1 变为 2.

顺便说一下,源类型是 IndexSet,您可以将 non-subsequent 索引处的多个项目移动到 目标 索引。

默认情况下,核心数据记录是无序的。如果实体中有索引属性,则必须 re-index 记录,至少从已更改的第一个索引开始。