核心数据,@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()
}
我使用“核心数据”保存应用程序数据并使用“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()
}