TMLPersistentContainer
Automatic shortest-path multi-step Core Data migrations in Swift.
A Swift extension to Core Data's NSPersistentContainer that automatically
detects and performs 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:
container = PersistentContainer(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 = selfAll migrations happen as part of NSPersistentContainer.loadPersistentStores.
Documentation
- User guide and API documentation online.
- Or in the docs/ folder of a local copy of the project.
- Docset for Dash etc. at docs/docsets/TMLPersistentContainer.tgz
- Read
TestSimpleMigrate.testCanMigrateV1toV3inTwoStepsfor an end-to-end example.
Requirements
Swift 4.1, Xcode 9.3.1
- See the swift31 branch for a Swift 31 version.
- See the swift4 branch for a Swift 4 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.
No additional software dependencies.
Installation
CocoaPods:
pod 'TMLPersistentContainer'
Swift package manager:
.Package(url: "https://github.com/johnfairh/TMLPersistentContainer/", majorVersion: 3)
Carthage:
github "johnfairh/TMLPersistentContainer"
Contributions
Contributions and feedback welcome: open an issue / johnfairh@gmail.com / twitter @johnfairh
License
Distributed under the ISC license.



