import UIKit import CoreStore 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.Required("name", initial: "") let pets = Relationship.ToManyUnordered("pets", inverse: { $0.master }) } let dataStack = DataStack( CoreStoreSchema( modelVersion: "V1", entities: [ Entity("Animal"), Entity("Person") ] ) ) try dataStack.addStorageAndWait() 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) }) 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)