У меня есть список, показывающий CoreData FetchedResults. Я хотел бы реализовать возможность перемещения строки и в то же время обновить атрибут порядка объекта. FetchedResults не является массивом, поэтому я не могу использовать свойство move массива. Вот как я это реализовал, но не очень хорошо работает.
func move(fromOffsets: IndexSet, toOffset: Int) {
var orders: [Int16] = Array(1...Int16(myEntities.count))
orders.move(fromOffsets: fromOffsets, toOffset: toOffset)
for (entity, order) in zip(myEntities, orders) {
entity.order = order
}
}
В моем коде я получаю массив текущего порядка, выполняю перемещение и затем переназначаю их.
Я думаю, что лучшим вариантом было бы создать собственное свойство перемещения для Collection where Element: MyEntity, Index == Int
.
Любая идея?
Чтобы воссоздать сценарий, вы можете легко запустить новый SwiftUI Master- Подробный проект с выбранной опцией CoreData, затем просто добавьте атрибут порядка к сущности (не забудьте отсортировать @FetchRequest
с NSSortDescriptor(keyPath: \MyEntity.order, ascending: true)]
)