Core data SwiftUI在视图之间传递核心数据错误

Core data SwiftUI在视图之间传递核心数据错误,core-data,swiftui,Core Data,Swiftui,我有一个可以添加的核心数据元素列表。我希望能够编辑它们。为此,我有一个“编辑表”视图。但当我尝试编辑该元素时,应用程序崩溃,并出现错误“Thread 1:”-[Item setTitle:]:无法识别的选择器发送到实例0x60000247A80“” 我在此处重新创建了错误: struct ListView: View { @Environment(\.managedObjectContext) var viewContext @FetchRequest(sortDescripto

我有一个可以添加的核心数据元素列表。我希望能够编辑它们。为此,我有一个“编辑表”视图。但当我尝试编辑该元素时,应用程序崩溃,并出现错误“Thread 1:”-[Item setTitle:]:无法识别的选择器发送到实例0x60000247A80“” 我在此处重新创建了错误:

struct ListView: View {
    @Environment(\.managedObjectContext) var viewContext
    @FetchRequest(sortDescriptors: []) var items: FetchedResults<Item>
    
    @State var showEditItemSheet = false
    @State var itemToEdit = Item()
    var body: some View {
        List {
            ForEach(items) { item in
                ListItemView(item: item)
                    .onTapGesture {
                        itemToEdit = item
                        showEditItemSheet.toggle()
                    }
            }
        }
        .sheet(isPresented: $showEditItemSheet, content: {EditItemView(item: itemToEdit, showEditItemSheet: $showEditItemSheet)}
        }
}

struct ListItemView: View {
    @FetchRequest(sortDescriptors: []) var items: FetchedResults<Item>
    @ObservedObject var item: FetchedResults<Item>.Element
    var body: some View {
        Text(item.title)
    }
}

struct EditItemView: View {
    @Environment(\.managedObjectContext) var viewContext
    @State var item: FetchedResults<Item>.Element
    @Binding var showEditItemSheet: Bool
    @State var title = ""
    var body: some View {
        VStack {
            TextField("Title", text: $title)
            Button(action: {
                item.title = title //<- Here I get the error
                saveContext()
                showEditItemSheet.toggle()
            }, label: {Text("Save")})
        }
    }
    private func saveContext() {
        do {
            try viewContext.save()
        } catch {
            let error = error as NSError
            fatalError("Unresolved Error: \(error)")
        }
    }
}
结构列表视图:视图{ @环境(\.managedObjectContext)变量viewContext @FetchRequest(sortDescriptors:[])变量项:FetchedResults @状态变量showEditItemSheet=false @状态变量itemToEdit=Item() var body:一些观点{ 名单{ ForEach(items){item in ListItemView(项:项) .ontapsigne{ itemToEdit=项目 showEditItemSheet.toggle() } } } .sheet(显示:$showEditItemSheet,内容:{EditItemView(项目:itemToEdit,showEditItemSheet:$showEditItemSheet)} } } 结构ListItemView:视图{ @FetchRequest(sortDescriptors:[])变量项:FetchedResults @ObservedObject变量项:FetchedResults.Element var body:一些观点{ 文本(项目名称) } } 结构EditItemView:视图{ @环境(\.managedObjectContext)变量viewContext @状态变量项:FetchedResults.Element @绑定变量showEditItemSheet:Bool @State var title=“” var body:一些观点{ VStack{ 文本字段(“标题”,文本:$Title) 按钮(操作:{
item.title=title//尝试在EditItemView中将该项声明为
var item:item
。我这样做了,但没有修复我的错误,但感谢您的帮助!您好!您的“item”是一个类(特别是NSManagedObject子类),但@State仅适用于编辑结构。在EditItemView中,尝试将声明更改为
@ObservedObject var item:item