我知道这已被多次询问,但我正在努力查看哪些属性没有被初始化。这些字段中的每一个都来自 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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句