2012-11-18 6 views
3

Я выпустил версию 1.0 своего приложения. Версия 1.1 скорее всего будет включать какой-то код миграции. Для аргументации предположим, что он обновит базовый атрибут данных - все имена будут преобразованы в верхний регистр. Я буду исполнять этот код при первом запуске в версии 1.1.Как применяются несколько обновлений приложений?

Должен ли я использовать этот код для всех последующих версий? Если пользователь пропустит 1.0 и только обновления, когда выпущен 1.2, будет ли применяться 1.1 автоматически автоматически? Или мне нужно постоянно проверять, обновлять ли последние имена во всех версиях навсегда?

ответ

2

Вы не публикуете обновления, вы выпускаете новые версии. Если кто-то обновляется с 1.0 до 1.2 и пропускает 1.1, то это именно то, что происходит. 1.1 никогда не будет установлен или выполнен.

EDIT:

Вот предложение по очень простому способу управления обновлениями. Наверное, не самый элегантный, но он работает.

NSString *lastVersion = [[NSUserDefaults standardUserDefaults] 
         stringForKey:@"LastVersion"]; 
NSString *currentVersion = [[NSBundle mainBundle] 
      objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 

if ([self version:lastVersion isSmallerThanVersion:@"1.1"]) { 
    // update from 1.0 to 1.1 here. 
} 
if ([self version:lastVersion isSmallerThanVersion:@"1.2"]) { 
    // update from 1.1 to 1.2 here. 
} 
if ([self version:lastVersion isSmallerThanVersion:@"1.3"]) { 
    // update from 1.2 to 1.3 here. 
} 

[[NSUserDefaults standardUserDefaults] 
    setObject:currentVersion forKey:@"LastVersion"]; 

В этом примере вы имели 4 версии (1.0, 1.1, 1.2, 1.3) и 1.3 является новейшим выпуск.

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

В основном вы загружаете последнюю версию, которую пользователь использовал на этом устройстве, по умолчанию пользователя. Если приложение запускается впервые, не будет известных ранее версий, ни одна из процедур обновления не будет выполнена, а текущая версия (1.3) будет сохранена в качестве последней используемой версии.

Если приложение использовалось с предыдущей версией (1.2), то lastVersion будет 1.2 и выполнен только последний блок if.

Если приложение использовалось с версией 1.1, но пропустило 1.2 и теперь обновлено до 1.3, lastVersion будет равно 1.1, а два последних блока if будут выполняться последовательно. Поэтому сначала вы обновляете свои данные с 1,1 до 1,2, а затем от 1,2 до 1,3.

+0

Спасибо - так версия 500 10 лет теперь предположить, что пользователь может быть обновление с любой версии 1..499, и обрабатывать все известные ядра состояния данных, существовавшие за это время? –

+1

В значительной степени, да. Но это не так сложно. Для каждой новой версии вам нужно всего лишь выполнить одну процедуру обновления. См. Редактирование. – DrummerB

2

Вы должны сохранить код миграции для всех версий> 1.0

Смежные вопросы