【问题标题】:Value of type 'some View' has no member 'onDelete' in SwiftUI“某些视图”类型的值在 SwiftUI 中没有成员“onDelete”
【发布时间】:2020-03-30 22:55:49
【问题描述】:

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

我无法对列表执行 .onDelete。获取Value of type 'some View' has no member 'onDelete'error。第二个错误 - 列表中的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

核心数据项如下所示:

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

任何帮助表示赞赏。

【问题讨论】:

  • 我没有发现任何问题。

标签: swift list swiftui-list swiftui


【解决方案1】:

这似乎是 Xcode 或 SwiftUI 环境中的错误。 在尝试解决问题几个小时后,我重新创建了 NSManagedObject,清理了 Xcode,重新启动了我的 mac,然后它突然工作了。

【讨论】:

  • 如果你再次遇到这个问题,我发现修改 NSManagedObject 后清除模拟器数据有帮助:xcrun simctl --set previews delete all(在终端中运行)
猜你喜欢
  • 2021-12-10
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2021-09-02
  • 2020-08-03
相关资源
最近更新 更多