swiftui删除核心数据行

Posted

技术标签:

【中文标题】swiftui删除核心数据行【英文标题】:swiftui delete core data row 【发布时间】:2021-01-23 15:21:26 【问题描述】:

我想使用核心数据来存储我的数据。 另外,我想在需要时删除数据(行)。 我参考了下面的网站。 https://blckbirds.com/post/core-data-and-swiftui/

可以很好的添加数据,但是我想删除数据而不使用List和ForEach.onDelete()。

但是,作为我的搜索结果,除了使用 ForEach 的 .onDelete() 之外,我找不到删除一行核心数据的方法。

有没有办法在不使用列表、ForEach onDelete 的情况下删除特定数据(Row)??

【问题讨论】:

这是否回答了您的问题***.com/a/62154314/12299030? 你可以有一个按钮,然后运行代码:moc.delete(LIST_ITEM) 然后try? moc.save(),其中moc 定义为@Environment(\.managedObjectContext) private var moc。 (该教程使用变量名viewContext 而不是moc)。 This 也可能有用。他们使用onDelete,但你不需要使用它。 这能回答你的问题吗? Delete data from CoreData 【参考方案1】:
import SwiftUI
import CoreData

struct ContentView: View 
    @Environment(\.managedObjectContext) private var context
    @FetchRequest(
        sortDescriptors: [NSSortDescriptor(keyPath: \Order.timestamp, ascending: true)],
        animation: .default)
    private var orders: FetchedResults<Order>

//.....your code....

for order in orders 
  if order.name == «KuKu” //here is your condition 
  self.deleteSelectedOrder(selectedOrder: order)
  

func deleteSelectedOrder(selectedOrder: Order)
  context.delete(selectedOrder as! NSManagedObject)
            do 
                try context.save()
             catch 
               
                let nsError = error as NSError
                fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
            

【讨论】:

以上是关于swiftui删除核心数据行的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 列表在删除后继续显示核心数据项

如何从 SwiftUI 的详细信息视图(编辑项目视图)中删除核心数据条目?

在 macOS 上的 SwiftUI 列表视图中选择和删除核心数据实体

Index Beyond Bounds / EXC_BAD_ACCESS 核心数据删除 SwiftUI

从核心数据中删除/添加到核心数据后,带有列表的 SwiftUI TabView 不刷新

SwiftUI .swipeactions 和核心数据