- 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)