使用 CoreData 在 SwiftUI 中填充列表

Filling a List in SwiftUI with CoreData

我正在尝试用我的 "FlightRecording" 实体中的所有条目填充一个列表。但我不能使用 Text(recording.name),因为它显示 "NSManagedObject has no member 'name' "。 为什么这甚至是一个 NSManagedObject 而不是 'FlightRecordings' 类型的对象?

struct FlightRecorderBrowser: View {
    let flightRecordings: [FlightRecording] = FlightRecorder().fetchAllRecordings()
    var body: some View {
        NavigationView {
            List() {
                ForEach(flightRecordings, id: \.self) {recording in
                    Text(recording.name)
                }
            }

            .navigationBarTitle("Flight Recordings")
        }
    }
}

尝试向 ForEach 闭包添加显式类型,因为记录可以同时是 NSManagedObjectFlightRecording,所以编译器只是决定使用 NSManagedObject.

ForEach(flightRecordings, id: \.self) { (recording: FlightRecording) in
    Text(recording.name)
}

编辑:如果 recording.name 是可选的,您必须强制展开它或为 Text 提供替代方案才能使用该值。 recording.name!recording.name ?? "default-text"

另一个避免强制展开错误的选项是仅在 if recording.name != nil.

时显示文本