Должен ли я включить управление версиями в своем первом выпуске, чтобы использовать облегченную миграцию в последующих выпусках?

Меня пугает изменение модели данных в последующих релизах.

Я создал новый файл xcdatamodel в Xcode, который по умолчанию не имеет версии. Я знаю, что вы можете щелкнуть где-нибудь и сделать это «первой версией». В дереве групп и файлов файл xcdatamodel получает толстую черную стрелку с левой стороны, которую вы можете щелкнуть, чтобы увидеть все версии внутри.

В моем файле нет такой толстой стрелки, поэтому он не версионирован.

Не вызовет ли это впоследствии больших проблем? Нужно ли с самого начала создавать версии с самого начала, чтобы облегченная миграция работала позже? После того, как приложение отправлено пользователям, это уже нельзя изменить.


person Proud Member    schedule 17.05.2011    source источник


Ответы (1)


Вам не нужно настраивать упрощенную миграцию в первом выпуске. Когда вы решите мигрировать, вам нужно сделать две вещи. Во-первых, вы должны сохранить копию каждой версии вашей модели данных. Эти модели обычно хранятся в файле .xcdatamodeld. В качестве альтернативы вы можете просто сохранить кучу файлов .xcdatamodel. Однако лучше всего использовать файл .xcdatamodeld, чтобы все было организовано. Во-вторых, вы должны активировать облегченную миграцию у координатора постоянного хранилища. При создании постоянного координатора хранилища вы сделаете что-то вроде следующего:

__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

// Automatically migrates the model when there are small changes.
NSDictionary * options = [NSDictionary dictionaryWithObjectsAndKeys:
                          [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                          [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, 
                          nil];
[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType 
                                           configuration:nil 
                                                     URL:storeURL 
                                                 options:options 
                                                   error:&error];

Помните, что упрощенная миграция может сделать не так много. Если вам нужно внести более серьезные изменения, вам нужно будет создать модель сопоставления.

person rbrown    schedule 09.06.2011