The Background
- A Cocoa Non Document Core Data project with two Managed Object Models.
- Model 1 stays the same. Model 2 has changed, so I want to migrate the store.
- I've created a new version by Design > Data Model > Add Model Version in Xcode.
- The difference between versions is a single relationship that's been changed from to a one to many.
- I've made my changes to the model, then saved.
- I've made a new Mapping Model that has the old model as a source and new model as a destination.
- I've ensured all Mapping Models and Data Models and are being compiled and all are copied to the Resource folder of my app bundle.
- I've switched on migrations by
passing in a dictionary with the
NSMigratePersistentStoresAutomaticallyOption
key as[NSNumber numberWithBool:YES]
when adding the Persistent Store. - Rather than merging
all models in the bundle, I've specified the two
models I want to use (model 1 and the
new version of model 2) and merged
them using
modelByMergingModels:
The Problem
No matter what I do to migrate, I get the error message:
"Persistent store migration failed, missing source managed object model."
What I've Tried
- I clean after every single build.
- I've tried various combinations of having only the model I'm migrating to in Resources, being compiled, or both.
- Since the error message implies it can't find the source model for my migration, I've tried having every version of the model in both the Resources folder and being compiled.
- I've made sure I'm not making a really basic error by switching back to the original version of my data model. The app runs fine.
- I've deleted the Mapping Model and the new version of the model, cleaned, then recreated both.
- I've tried making a different change in the new model - deleting an entity instead.
I'm at my wits end.
I can't help but think I've made a huge mistake somewhere that I'm not seeing. Any ideas?