使用 CoreData 在 SwiftUI 中填充列表

nOk*_*nOk 3 core-data swift swiftui

我正在尝试用“FlightRecording”实体中的所有条目填充列表。但我不能使用,Text(recording.name)因为它说“NSManagedObject 没有成员‘名称’”。为什么这甚至是 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")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Fab*_*ian 5

尝试向ForEach闭包添加显式类型,因为记录可以同时是 anNSManagedObject和 a FlightRecording,因此编译器刚刚决定使用NSManagedObject.

ForEach(flightRecordings, id: \.self) { (recording: FlightRecording) in
    Text(recording.name)
}
Run Code Online (Sandbox Code Playgroud)

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

避免强制解包错误的另一个选项是仅显示 Text if if recording.name != nil