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 data. Of course I could check if the entity is empty every time the application starts, but this seems inefficient when Core Data has a migration framework.
Is it possible to detect when a lightweight migration occurs (possibly using KVO or notifications), or does this require implementing standard migrations?
I’ve tried using the NSPersistentStoreCoordinatorStoresDidChangeNotification, but it doesn’t fire when migrations occur.
To detect whether a migration is needed, check to see if the persistent store coordinator’s managed object model is compatible with the existing store’s metadata (adapted from Apple’s Is Migration Necessary):
If
pscCompatibileisNO, then a migration will need to occur. To examine the entity changes, compare theNSStoreModelVersionHasheskey in thesourceMetadatadictionary to the[destinationModel entities]: