Home

Awesome

CoreData Kit

<div align="center"> <img width="600px" src="./Extras/Images/Banner-1.png" alt="CypherPoetCoreDataKit Header Image"> </div> <p> <img src="https://img.shields.io/badge/Swift-5.5-F06C33.svg" /> <img src="https://img.shields.io/badge/iOS-15.0+-865EFC.svg" /> <img src="https://img.shields.io/badge/iPadOS-15.0+-F65EFC.svg" /> <img src="https://img.shields.io/badge/macOS-12.0+-179AC8.svg" /> <img src="https://img.shields.io/badge/tvOS-15.0+-41465B.svg" /> <img src="https://img.shields.io/badge/watchOS-8.0+-1FD67A.svg" /> <img src="https://img.shields.io/badge/License-MIT-blue.svg" /> <img src="https://github.com/CypherPoet/CypherPoetCoreDataKit/workflows/Build%20&%20Test/badge.svg" /> <a href="https://github.com/apple/swift-package-manager"> <img src="https://img.shields.io/badge/spm-compatible-brightgreen.svg?style=flat" /> </a> <a href="https://twitter.com/cypher_poet"> <img src="https://img.shields.io/badge/Contact-@cypher_poet-lightgrey.svg?style=flat" alt="Twitter: @cypher_poet" /> </a> </p> <p align="center">

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

<p />

🚧 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

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

<!-- ### [Advanced Fetching]() (adapted from _Core Data by Tutorials_) -->

Core Data Migrations

Requirements

📜 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.