Git Product home page Git Product logo

coredatakit's Introduction

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.

coredatakit's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.