删除每个循环中的所有项目?

Posted

技术标签:

【中文标题】删除每个循环中的所有项目?【英文标题】: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 【参考方案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 对象。

【讨论】:

以上是关于删除每个循环中的所有项目?的主要内容,如果未能解决你的问题,请参考以下文章

使用 for 循环删除列表中的项目

我的 for 循环没有根据条件删除数组中的项目? Python [重复]

使用 For Each 循环遍历列表时删除列表中的项目

如何从 postgresql 10.3 中的这个多重连接查询中删除嵌套循环

从 NSMutableArray 中删除 for 循环中的对象

如何使用JavaScript将循环内数组中的所有项目相乘[重复]