import UIKit import CoreStore /// Model Declaration ===== class Animal: CoreStoreObject { let species = Value.Required("species", initial: "Swift") let master = Relationship.ToOne("master") let color = Transformable.Optional("color", initial: .orange) } class Person: CoreStoreObject { let name = Value.Optional("name") let pets = Relationship.ToManyUnordered("pets", inverse: { $0.master }) } /// ======================= /// Stack setup =========== let dataStack = DataStack( CoreStoreSchema( modelVersion: "V1", entities: [ Entity("Animal"), Entity("Person") ] ) ) try dataStack.addStorageAndWait(SQLiteStore(fileName: "data.sqlite")) /// ======================= /// Transactions ========== dataStack.perform(synchronous: { transaction in let animal = transaction.create(Into()) animal.species .= "Sparrow" animal.color .= .yellow let person = transaction.create(Into()) person.name .= "John" person.pets.value.insert(animal) }) /// ======================= /// Accessing Objects ===== let bird = dataStack.fetchOne(From().where(\.species == "Sparrow"))! bird.species.value bird.color.value print(bird) let owner = bird.master.value! owner.name.value owner.pets.count print(owner) /// =======================