核心数据,@Environment(\.managedObjectContext),onMove

Core Data, @Environment(\.managedObjectContext), onMove

我使用“核心数据”保存应用程序数据并使用“ForEach”将其呈现在列表中,我赋予“实体”“索引”属性以便我可以按顺序对数据进行排序,我可以删除数据使用“.onDelete(perform: deleteList)”,如下面的代码所示,但我不知道如何实现“.onMove”,任何人都可以帮助或给我一个示例代码或任何东西。

struct ListsView: View {

    @FetchRequest(entity: ListOfTasks.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \ListOfTasks.index, ascending: true)]) private var lists: FetchedResults<ListOfTasks>
    
    @Environment(\.managedObjectContext) private var viewContext

var body: some View {
                    Section {
                        ForEach(self.lists, id: \.self) { list in
                            Text("\(list.wrappedTitle)")
                        }
                        .onDelete(perform: deleteList)
                    }
}

    func deleteList(at offsets: IndexSet) {
        for offset in offsets {
            let list = lists[offset]
            self.viewContext.delete(list)
        }
        try? viewContext.save()
    }
}

这对我有用,尝试使用您的名字是这样的:

.onMove { 
    // make an array from the core data entity, clever part
    var revisedItems: [ ListOfTasks ] = lists.map {[=10=]} 
    // Do normal move action on array
    revisedItems.move(fromOffsets: [=10=], toOffset: )
    // Update index elements to correct order
    for i in 0..<revisedItems.count { revisedItems[i].index = i }
    try? viewContext.save()
}