使用CoreData在SwiftUI中填充列表

时间:2019-08-16 17:57:28

标签: swift core-data swiftui

我正在尝试使用“ FlightRecording”实体中的所有条目填充列表。但我不能使用Text(recording.name),因为它说“ NSManagedObject没有成员'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")
        }
    }
}

1 个答案:

答案 0 :(得分:3)

尝试将显式类型添加到ForEach闭包中,因为记录可以同时是NSManagedObjectFlightRecording,因此编译器决定使用{{1} }。

NSManagedObject

编辑:如果ForEach(flightRecordings, id: \.self) { (recording: FlightRecording) in Text(recording.name) } 是可选的,则必须强制将其拆开或为Text提供使用该值的替代方法。 recording.namerecording.name!

避免强制展开错误的另一种方法是仅在recording.name ?? "default-text"时显示Text。