Я отвечаю на свой вопрос здесь, если это кому-нибудь поможет.
Важнейшая проблема заключается в том, что, когда я достиг версии 4 своей объектной модели, я также добавил в проект дополнительную модель управляемых объектов.Эта дополнительная модель была отделена от моей основной модели и просто используется для создания кэша в другом потоке и содержит данные, которые не связаны с основной моделью.
Глупо я по-прежнему инициализировал свой managedObjectModel, используя
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]
, который в моем случае создал модель, содержащую сущности из моей основной модели, а также из моей другой модели.Эти нежелательные объекты имели свои хэши версий в моей базе данных.Когда данные ядра затем отправляются на поиск модели управляемого объекта, которая соответствует всем этим хэшам, она, естественно, не может найти ее.
В моем случае решение состояло в том, чтобы вручную очистить мои файлы БД перед миграцией (удаляя хэши версий из нежелательных объектов).) .. а затем изменить мой код загрузки managedObjectModel на;
NSString *path = [[NSBundle mainBundle] pathForResource:@"MyDataModel" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];