To recap/Full guide:
-
Before making any change, create a new model version.
In Xcode 4: Select your
.xcdatamodel-> Editor -> Add Model Version.In Xcode 3: Design -> Data Model -> Add Model Version.
You will see that a new
.xcdatamodelis created in your.xcdatamodeldfolder (which is also created if you have none). -
Save.
-
Select your new
.xcdatamodeland make the change you wish to employ in accordance with the Lightweight Migration documentation. -
Save.
-
Set the current/active schema to the newly created schema.
With the
.xcdatamodeldfolder selected:In Xcode 4: Utilities sidebar -> File Inspector -> Versioned Core Data Model -> Select the new schema.
In Xcode 3: Design > Data Model > Set Current Version.
The green tick on the
.xcdatamodelicon will move to the new schema. -
Save.
-
Implement the necessary code to perform migration at runtime.
Where your
NSPersistentStoreCoordinatoris created (usually AppDelegate class), for theoptionsparameter, replacenilwith the following code:[NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil] -
Run your app. If there’s no crash, you’ve probably successfully migrated 🙂
-
When you have successfully migrated, the migration code (step 7) can be removed. (It is up to the developer to determine when the users of a published app can be deemed to have migrated.)
IMPORTANT: Do not delete old model versions/schemas. Core Data needs the old version to migrate to the new version.