I\'m using Core Data\'s automatic lightweight migration successfully. However, when a particular entity gets created during a migration, I\'d like to populate it with some d
The accepted answer converted to Swift...
var persistentStoreCoordinator: NSPersistentStoreCoordinator?
var url: URL
do {
let sourceMetadata = try NSPersistentStoreCoordinator.metadataForPersistentStore(ofType: NSSQLiteStoreType, at: url, options: nil)
if let destinationModel = persistentStoreCoordinator?.managedObjectModel {
let compatibile = destinationModel.isConfiguration(withName: nil, compatibleWithStoreMetadata: sourceMetadata)
if !compatibile {
if let versionHashes = sourceMetadata["NSStoreModelVersionHashes"] as? [String: Any] {
let sourceEntities = Set(versionHashes.keys)
let destinationEntities = Set(destinationModel.entitiesByName.keys)
var addedEntities = Set(destinationEntities)
addedEntities.subtract(sourceEntities)
var removedEntities = Set(sourceEntities)
removedEntities.subtract(destinationEntities)
let modelName = (destinationModel.versionIdentifiers.first as? String) ?? ""
NSLog("Core Data requires a migration to model '\(modelName)'...\nAdded: \(addedEntities)\nRemoved: \(removedEntities)")
}
}
}
} catch {
...
}