- Core data
- Object-oriented database
- Core Data uses SQL to store the data but interacting with it happens using Swift and object-oriented programming
- The objects we create in the database are
ObservableObject
s -
@FetchRequest
fetches the objects and represents a "standing query" - To get Core Data to a project it's required to check the box when creating a new project
- If you already have a project where you want to add Core Data, create a new project and copy paste everything there
AppName.xcdatamodeId
SceneDelgate.swift
creates context
that is then passed to all views using .environment
@Environment(\.managedObjectContext) var context
...
.sheet(isPresented: $showFilter) {
FilterFlights(flightSearch: self.$flightSearch, isPresented: self.$showFilter)
.environment(\.managedObjectContext, self.context)
@Environment(./managedObjectContext) var context
let flight = Flight(context: context)
flight.aircraft = "B737"
let ksjc = Airport(context: context)
ksjc.icao = "KSJC"
flight.origin = ksjc // add flight to ksjc.flightsFrom
try? context.save() // disk might be full but in general don't fail
let request = NSFetchRequest<Flight>(entityName: "Flight")
request.predicate = NSPredicate(format: "arrival < %@ and origin = %@", Date(), ksjc)
request.sortDescriptors = [NSSortDescriptor(key: "indent", ascending: true)]
let flights = try? context.fetch(request) // KSJC flights sorted by ident
// flights is nil if fetch failed, [] if no such flights, otherwise [Flight]
Top comments (0)