Swift 错误消息 - Return 来自初始化程序但未初始化所有存储的属性

Swift Error Message - Return from initializer without initializing all stored properties

我知道这个问题已经被问过很多次了,但我正在努力查看哪些属性没有被初始化。这些字段中的每一个都来自 CoreData 模型,我正在填充其各自的模型。任何人都可以帮助这将是哪个参数。 CoreData 实体中的所有字段且不是可选的。

init() {
    self.flightListVM = FlightListViewModel()   -- Error Line
}

import Foundation
import SwiftUI
import CoreData
import Combine

class FlightListViewModel: ObservableObject {

@Published
var flights = [FlightViewModel]()

init() {
    fetchAllFlights()
}

func deleteFlight(_ flightVM: FlightViewModel) {
    CoreDataManager.shared.deleteFlight(id: flightVM.id)
    fetchAllFlights()
}

func fetchAllFlights() {
    self.flights = CoreDataManager.shared.getAllFlights().map(FlightViewModel.init)
    print(self.flights)
}
}

struct FlightViewModel {

var id: UUID
var date: Date
var origin: String
var destination: String
var altitude: Double
var duration: Double


init(flight: Flight) {
    
    self.id = flight.id!
    self.date = flight.date!
    self.origin = flight.origin!
    self.destination = flight.destination!
    self.altitude = flight.altitude
    self.duration = flight.duration

 
}

}

-核心数据对象

import Foundation
import CoreData


extension Flight {

@nonobjc public class func fetchRequest() -> NSFetchRequest<Flight> {
    return NSFetchRequest<Flight>(entityName: "Flight")
}

@NSManaged public var id: UUID?    
@NSManaged public var date: Date?
@NSManaged public var origin: String?
@NSManaged public var destination: String?
@NSManaged public var altitude: Double
@NSManaged public var duration: Double

}

------------ 第一个初始化代码块

struct ContentView: View {

@ObservedObject var flightListVM: FlightListViewModel    
@State private var isPresented: Bool = false

init() {
    self.flightListVM = FlightListViewModel()  -- Error Line
}

private func delete(at offsets: IndexSet) {
    offsets.forEach { index in
        let flightVM = self.flightListVM.flights[index]
        self.flightListVM.deleteFlight(flightVM)
    }
}

var flights: FetchedResults<Flight>

var body: some View {
    
    NavigationView {
    
    List {
        
        ForEach(self.flightListVM.flights, id: \.id) { flight in
            HStack {
                
                Text(flight.origin)
                    .font(.largeTitle)
                    .padding([.leading], 10)
                
            }
        }.onDelete(perform: delete)
        
    }
    .sheet(isPresented: $isPresented, onDismiss: {
        print("Here")
        self.flightListVM.fetchAllFlights()
    }, content: {
        AddFlightView()
    })
    .navigationBarTitle("Flights")
    .navigationBarItems(trailing: Button("Add New Flight") {
        self.isPresented = true
    })
    }
    
}

}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
    ContentView().environment(\.managedObjectContext, 
PersistenceController.preview.container.viewContext)
}
}

在您的 ContentView 中,以下行未在您的 init 中初始化:

var flights: FetchedResults<Flight>