Skip to content

CypherPoet/CoreDataKit

Repository files navigation

CoreData Kit

CypherPoetCoreDataKit Header Image

Twitter: @cypher_poet

A collection of utilities for building Core Data-backed applications in Swift.

🚧 Disclaimer

This library is still very much a WIP as I study/experiment with/develop best practices, patterns, and affordances for Core Data after the releases of Swift 5.5 and "SwiftUI 3.0". Please treat it as a guideline/reference for the time being 🙂.

Features

  • ✅ A CoreDataManager that handles setting up a "Core Data Stack".
  • ✅ A rich set of utilities for performing Core Data migrations.
  • ✅ A FetchedResultsControlling protocol that helps architect NSFetchedResultsController instances and extract data from their NSFetchRequest results.
  • ✅ Utilities for composing NSPredicate instances in a strongly-typed fashion.
  • ✅ Strongly-typed errors under types like CoreDataManager, PersistentStoreMigrator and more.
  • NSPersistentStore helpers for using different SQLite writing locations in development and production.

Installation

Xcode Projects

Select File -> Swift Packages -> Add Package Dependency and enter https://github.com/CypherPoet/CypherPoetCoreDataKit.

Swift Package Manager Projects

You can add this project as a package dependency in your Package.swift file:

let package = Package(
    //...
    dependencies: [
        .package(
            url: "https://github.com/CypherPoet/CoreDataKit",
            .exact("0.0.21")
        ),
    ],
    //...
)

From there, refer to the CoreDataKit "product" delivered by the CypherPoetCoreDataKit "package" inside of any of your project's target dependencies:

targets: [
    .target(
        name: "YourLibrary",
        dependencies: [
            .product(name: "CoreDataKit", package: "CypherPoetCoreDataKit"),
        ],
        ...
    ),
    ...
]

Then simply import CoreDataKit wherever you’d like to use it.

Usage

Currently, usage of these utilities is best demonstrated by the various example applications here. But a few pointers...

Dynamically initializing a Core Data Stack for your app depending on whether it's running for production or for Xcode Previews.

Setting up the Core Data stack on launch

Core Data Migrations

Requirements

  • Xcode 13.0+ (Recommended)

📜 Generating Documentation

Documentation is generated by Swift Doc. Installation instructions can be found here, and as soon as you have it set up, docs can be generated simply by running ./Scripts/generate-html-docs.zsh from the command line.

📝 Note that this will only generate a .build/documentation folder for you to view locally. This folder is being ignored by git, and a GitHub action exists to automatically generate docs at the root level and serve them on the project's gh-pages branch.

🏷 License

CypherPoetCoreDataKit is available under the MIT license. See the LICENSE file for more info.