Swift Package Index


Shortest-path multi-step Core Data migrations in Swift


  • The latest stable release is 5.0.1. Released 6 months ago.
  • The last commit to master was 4 months ago.

Swift Version Compatibility

  • 5.0.1 and master
    5.3
    5.2
    5.1
    5.0
    4.2
Full build results

Platform Compatibility

  • 5.0.1 and master
    iOS
    macOS(Intel)
    macOS(ARM)
    Linux
    tvOS
    watchOS
Full build results

TMLPersistentContainer

CI codecov Pod Carthage compatible Platforms License

Automatic shortest-path multi-step Core Data migrations in Swift.

logo

A set of Swift extensions to Core Data's NSPersistentContainer and NSPersistentCloudKitContainer that automatically detect and perform multi-step store migration using the shortest valid sequence of migrations. The library supports both light-weight and heavy-weight migrations, multiple stores, progress reporting, and configurable logging.

Example

Minimally replace the call to NSPersistentContainer.init or NSPersistentCloudKitContainer:

container = PersistentCloudKitContainer(name: "MyStore",
                                        managedObjectModel: model)

Additional parameters optionally enable more features:

container = PersistentContainer(name: "MyStore",
                                managedObjectModel: model,
                                bundles: [Bundle.main, myResBundle],
                                modelVersionOrder: .list("V_One", "V_Two", "V_Six"),
                                logMessageHandler: myLogHandler)
container.migrationDelegate = self

All migrations happen as part of NSPersistentContainer.loadPersistentStores.

Documentation

Requirements

Swift 5 or later, Xcode 10.2 or later.

  • See the swift31 branch for a Swift 31 version.
  • See the swift4 branch for a Swift 4 version.
  • See the swift41 branch for a Swift 4.1 version.

The library is based on NSPersistentContainer so requires a minimum deployment target of iOS 10.0, macOS 10.12, tvOS 10.0, or watchOS 3.0.

The PersistentCloudKitContainer class is based on NSPersistentCloudKitContainer so further requires a minimum deployment target of iOS 13.0, macOS 10.15, tvOS 13.0, or watchOS 6.0.`

No additional software dependencies.

Installation

CocoaPods:

pod 'TMLPersistentContainer'

Swift package manager:

.Package(url: "https://github.com/johnfairh/TMLPersistentContainer/", majorVersion: 5)

Carthage:

github "johnfairh/TMLPersistentContainer"

Contributions

Contributions and feedback welcome: open an issue / johnfairh@gmail.com / twitter @johnfairh

License

Distributed under the ISC license.