在SwiftUI中,“某些视图”的类型没有名为“onDelete”的成员。

6

在我的应用程序中,我有一个ItemsListView,它显示从Core Data获取的项目列表。

我无法在列表上执行.onDelete操作。出现Value of type 'some View' has no member 'onDelete'错误。第二个错误是在列表上Protocol type 'Any' cannot conform to 'View' because only concrete types can conform to protocols

struct ItemsListView: View {
    @Environment(\.managedObjectContext) var managedObjectContext

    var fetchRequest: FetchRequest<Item>
    var items: FetchedResults<Item>{fetchRequest.wrappedValue}

    init() {
        fetchRequest = FetchRequest<Item>(entity: Item.entity(), sortDescriptors: [])
    }

    var body: some View {
        List { //error 2 appears here
            ForEach(items) { (item : Item)  in
                Text("\(item.name ?? "Nothing")")
            }.onDelete(perform: delete) // getting error here
        }
    }

    func delete(at offset: IndexSet) {
        // delete code will be added here
    }
}

我无法弄清楚如何修复错误并执行.onDelete操作

Core Data项目看起来像这样:

public class Item: NSManagedObject, Identifiable {
       @NSManaged public var name: String?
       @NSManaged public var recordID: String?
}

欢迎提供任何帮助。


1
我看不出任何问题。 - Mojtaba Hosseini
1个回答

2

看起来这是Xcode或SwiftUI环境中的一个错误。经过数小时的尝试修复问题后,我重新创建了NSManagedObject,清理了Xcode,重启了我的Mac,突然它就可以工作了。


如果您再次遇到此问题,我发现在修改NSManagedObject后清除模拟器数据有帮助:在终端中运行xcrun simctl --set previews delete all。 - FontFamily

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接