swiftui - 将 NSManagedObject 与 SwiftUI 列表一起使用

标签 swiftui nsmanagedobject

我想显示存储为 NSManagedObjects 的 CoreData 记录列表。

我想做这样的事情:

struct RecordView: View 
{
    @State var records:[MyRecord] //[NSManagedObject]

    var body: some View 
    {
        VStack
        {
            List(records) {record in // Error: Initializer 'init(_:rowContent:)' requires that 'Record' conform to 'Identifiable'
                RecordRow(record: record)
        }
    }
}

struct RecordRow: View {
    var record: Record //NSManagedObject

var body: some View
{
    NavigationLink(destination: RecordForm(record: record))
    {
        HStack
        {
            Text(record.name)
                .frame(width: 140, height: 50, alignment: .leading)
        }
    }

}

我收到错误

Initializer 'init(_:rowContent:)' requires that 'Record' conform to 'Identifiable'

我错过了什么?

最佳答案

由于 NSManagedObject 是引用类型,因此您可以简单地使用 self 作为每个 ID,如下所示

List(records, id: \.self) {record in
   RecordRow(record: record)

关于swiftui - 将 NSManagedObject 与 SwiftUI 列表一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60140126/

相关文章:

由于 NavigationLink,SwiftUI onAppear 被多次调用

ios - 如何使用多个条件过滤托管对象实体

ios - 静态 NSManagedObject 将保留在内存中

swift - 如何在没有固定宽度的情况下将文本包装在 UILabel 中(通过 UIViewRepresentable)?

ios - SwiftUI - 反转 bool 绑定(bind)

ios - 您可以自定义 SwiftUI 上下文菜单的激活突出显示颜色吗?

ios - SwiftUI:扩大/缩小列表单元格

ios - 与 CoreData : how to? 进行乘法(聚合)

ios - NSFetchedResultsController -sectionNameForKeypath 如何获取其数据?

objective-c - 用于比较核心数据属性的月份部分的谓词