DynamicObject

public protocol DynamicObject : AnyObject

All CoreStore’s utilities are designed around DynamicObject instances. NSManagedObject and CoreStoreObject instances all conform to DynamicObject.

  • The object ID for this instance

    Declaration

    Swift

    typealias ObjectID = NSManagedObjectID
  • Used internally by CoreStore. Do not call directly.

    Declaration

    Swift

    static func cs_forceCreate(entityDescription: NSEntityDescription, into context: NSManagedObjectContext, assignTo store: NSPersistentStore) -> Self
  • Used internally by CoreStore. Do not call directly.

    Declaration

    Swift

    static func cs_snapshotDictionary(id: ObjectID, context: NSManagedObjectContext) -> [String : Any]?
  • Used internally by CoreStore. Do not call directly.

    Declaration

    Swift

    static func cs_fromRaw(object: NSManagedObject) -> Self
  • Used internally by CoreStore. Do not call directly.

    Declaration

    Swift

    static func cs_matches(object: NSManagedObject) -> Bool
  • Used internally by CoreStore. Do not call directly.

    Declaration

    Swift

    func cs_toRaw() -> NSManagedObject
  • Used internally by CoreStore. Do not call directly.

    Declaration

    Swift

    func cs_id() -> ObjectID

Available where Self: CoreStoreObject

  • partialObject() Extension method

    Returns the PartialObject instance for the object, which acts as a fast, type-safe KVC interface for CoreStoreObject.

    Declaration

    Swift

    public func partialObject() -> PartialObject<Self>
  • Field Extension method

    The containing type for value propertiess.

    class Pet: CoreStoreObject {
    
        @Field.Stored("species")
        var species = ""
    
        @Field.Stored("nickname")
        var nickname: String?
    
        @Field.Coded("color", coder: FieldCoders.Plist.self)
        var eyeColor: UIColor?
    
        @Field.Relationship("owner", inverse: \.$pets)
        var owner: Person?
    
        @Field.Relationship("children")
        var children: Array<Pet>
    
        @Field.Relationship("parents", inverse: \.$children)
        var parents: Set<Pet>
    }
    

    Important

    Field properties are required to be used as @propertyWrappers. Any other declaration not using the @Field.*(...) var syntax will result in undefined behavior.

    Declaration

    Swift

    public typealias Field = FieldContainer<Self>

Public

Available where Self: CoreStoreObject

  • Relationship Extension method

    The containing type for relationships. Relationships can be any CoreStoreObject subclass.

    class Dog: CoreStoreObject {
        let master = Relationship.ToOne<Person>("master")
    }
    class Person: CoreStoreObject {
        let pets = Relationship.ToManyUnordered<Dog>("pets", inverse: { $0.master })
    }
    

    Important

    Relationship properties are required to be stored properties. Computed properties will be ignored, including lazy and weak properties.

    Declaration

    Swift

    public typealias Relationship = RelationshipContainer<Self>
  • Transformable Extension method

    The containing type for transformable properties. Transformable properties support types that conforms to NSCoding & NSCopying.

    class Animal: CoreStoreObject {
        let species = Value.Required<String>("species", initial: "")
        let nickname = Value.Optional<String>("nickname")
        let color = Transformable.Optional<UIColor>("color")
    }
    

    Important

    Transformable properties are required to be stored properties. Computed properties will be ignored, including lazy and weak properties.

    Declaration

    Swift

    public typealias Transformable = TransformableContainer<Self>
  • Value Extension method

    The containing type for value propertiess. Value properties support any type that conforms to ImportableAttributeType.

    class Animal: CoreStoreObject {
        let species = Value.Required<String>("species", initial: "")
        let nickname = Value.Optional<String>("nickname")
        let color = Transformable.Optional<UIColor>("color")
    }
    

    Important

    Value properties are required to be stored properties. Computed properties will be ignored, including lazy and weak properties.

    Declaration

    Swift

    public typealias Value = ValueContainer<Self>