【问题标题】:Delete all items in a for each loop?删除每个循环中的所有项目?
【发布时间】:2020-07-06 20:13:25
【问题描述】:

我有一个获取请求,以及一个列出项目的 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()
}

【问题讨论】:

  • 什么所有元素?全部在集合中还是您已获取的所有对象?无论哪种方式,您都应该查看this question

标签: ios swift foreach swiftui


【解决方案1】:

循环遍历taskItems并一一删除taskItem

func deleteAllTasks() {
    for taskItem in taskItems {
        managedObjectContext.delete(taskItem)
    }
    saveTasks()
}

【讨论】:

    【解决方案2】:

    尝试以下方法:

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

    假设saveTasks 保存managedObjectContext 对象。

    【讨论】:

      猜你喜欢
      • 2020-06-19
      • 2013-10-08
      • 2022-01-02
      • 2021-02-20
      • 2021-01-10
      • 2022-01-03
      • 2013-04-22
      • 2018-07-16
      • 1970-01-01
      相关资源
      最近更新 更多