Как я могу реализовать onMove в списке CoreData FetchedResults - PullRequest
0 голосов
/ 28 марта 2020

У меня есть список, показывающий 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)])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...