У меня никогда не было проблем с Xcode3, но с Xcode4 я получаю сбой кода Apple примерно 1 раз в 3, когда я обновляю базовую модель данных, с ужасающим «Ошибка переноса постоянного хранилища, отсутствует исходная модель управляемого объекта».ошибка.
Вот мои настройки (как я настроил проект для автоматической миграции):
- NSPersistentDocument, из шаблона Apple
- Переопределить метод загрузки моделей Apple,и единственное, что я делаю, это задаю два флага в словаре storeOptions, которые включают автоматическую миграцию
-(BOOL)configurePersistentStoreCoordinatorForURL:(NSURL *)url ofType:(NSString *)fileType modelConfiguration:(NSString *)configuration storeOptions:(NSDictionary *)storeOptions error:(NSError **)error
{
NSMutableDictionary *newOptions = nil;
if( storeOptions != nil )
newOptions = [NSMutableDictionary dictionaryWithDictionary:storeOptions];
else
newOptions = [NSMutableDictionary dictionary];
[newOptions setValue:@"YES" forKey:NSMigratePersistentStoresAutomaticallyOption];
[newOptions setValue:@"TRUE" forKey:NSInferMappingModelAutomaticallyOption];
BOOL success = FALSE;
success = [super configurePersistentStoreCoordinatorForURL:url ofType:fileType modelConfiguration:configuration storeOptions:newOptions error:error];
return success;
}
Вот процесс, который я использовал (который уже работает около 1ошибка в Xcode4!)
- Выберите модель (в Xcode4 с именем «нечто.xcdatamodel», с поворотом слева)
- Перейдите в меню редактора, выберите «Добавить новую модель»версия ... "
- Назовите новую версию 1 целым числом выше, чем в прошлом - например, если предыдущим было" 4 ", назовите новое" 5 "
- В правой панели изменитетекущая версия модели для вновь созданной
- обходной путь для ошибки XCode4 : выберите любой файл, затем выберите вновь созданную модель.Если вы этого не сделаете, XCode показывает выбор на вновь созданной модели, но вместо этого отредактирует предыдущую модель, что определенно повреждает все в CoreData
- Редактируйте вашу модель;в этом случае я добавляю новый атрибут к существующей сущности
- Сохранить.Построить.Запустить.... CRASH.
За исключением, как я уже сказал, примерно 2 раза в 3 это работает правильно.Как только он сработает один раз, это (очевидно) нормально - облегченная миграция завершена, следующее сохранение сохраняется в новой версии модели.
Итак, я предполагаю, что что-то не так в вышеуказанных шагах,но я просматривал документы 5 или 6 раз и не вижу ничего очевидного.Не помогает, что все документы NSPersistentDocument устарели, но я много раз делал облегченную миграцию на iPhone, поэтому я достаточно уверен в этом, и мне это кажется правильным.
Другие вещи, которые я попробовал / проверил: - Облегченная миграция данных iPhone Core Ошибка какао 134130: не удается найти модель для исходного хранилища (нет; был включен только корневой xcdatamodel)