首页 > 解决方案 > 删除每个循环中的所有项目?

问题描述

我有一个获取请求,以及一个列出项目的 foreach 循环。如何编写一个函数来删除该集合中的所有项目?

@FetchRequest(
    entity: TaskItem.entity(),
    sortDescriptors: [NSSortDescriptor(keyPath: \TaskItem.completedDate, ascending: false)],
    predicate: NSPredicate(format: "isComplete == %@", NSNumber(value: true))
) var taskItems: FetchedResults<TaskItem>
ForEach(taskItems, id: \.self) { item in
    Text("\(item.title)")
}

我有这个功能来删除单个项目。可以调整此代码并用于删除所有项目吗?

func deleteTask(indexSet: IndexSet) {
    let source = indexSet.first!
    let taskItem = taskItems[source]
    managedObjectContext.delete(taskItem)
    saveTasks()
}

标签: iosswiftforeachswiftui

解决方案


尝试以下操作:

func deleteAll() {
    // for each taskItem... delete
    taskItems.forEach(managedObjectContext.delete)
    saveTasks()
}

假设saveTasks保存managedObjectContext对象。


推荐阅读