core-data-model-description
core-data-model-description copied to clipboard
Declarative way to describe a Core Data model in code.
CoreDataModelDescription
Declarative way to describe a Core Data model in code. Swifty Core Data model 🙂
Usage
Use CoreDataModelDescription
to describe your model. Sample code describes this model:
Assuming you already defined Author
, Publication
, and Article
subclasses of NSManagedObject
.
let modelDescription = CoreDataModelDescription(
entities: [
.entity(
name: "Author",
managedObjectClass: Author.self,
attributes: [
.attribute(name: "name", type: .stringAttributeType)
],
relationships: [
.relationship(name: "publications", destination: "Publication", toMany: true, deleteRule: .cascadeDeleteRule, inverse: "author", ordered: true)
]),
.entity(
name: "Publication",
managedObjectClass: Publication.self,
attributes: [
.attribute(name: "publicationDate", type: .dateAttributeType),
.attribute(name: "numberOfViews", type: .integer64AttributeType, isOptional: true)
],
relationships: [
.relationship(name: "author", destination: "Author", toMany: false, inverse: "publications")
]),
.entity(
name: "Article",
managedObjectClass: Article.self,
parentEntity: "Publication",
attributes: [
.attribute(name: "text", type: .stringAttributeType)
])
]
)
let model = modelDescription.makeModel()
Motivation
Motivation and creating this package described in my article Core Data and Swift Package Manager.
This package is still on early stage of development. Please submit issues for missing functionality. Pull requests are more than welcome.