Как применяются несколько обновлений приложений?

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

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

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

РЕДАКТИРОВАТЬ:

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

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.

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

  • Перенос CoreData - удаление правил отношений
  • Удаление объектов отношения с каскадом в основных данных
  • Как реорганизовать базовую модель данных, чтобы две существующие сущности наследовали от нового абстрактного объекта
  • Как использовать запрос Fetch из xcdatamodeld?
  • Выполнение операций с основными данными в самостоятельном создании нескольких потоков для экономии времени обработки
  • Как фильтровать данные, полученные из Core Data?
  • Проблема переноса основной информации в IOS 8, а не IOS 9
  • Swift: Сортировка массива по дескрипторам сортировки
  • Ансамбли в iOS swift
  • Основная миграция данных - таблица уже существует
  • возможно ли иметь файлы данных с несколькими основными данными в один проект xcode?
  • Interesting Posts

    UICollectionView устанавливает 3 ячейки в строке для соответствия ширине экрана

    Swift 'open' ключевое слово & overridable метод / свойства в расширении?

    Eroor Использование NSPredicate с блоками в Swift «Не удалось найти перегрузку для« init », которая принимает предоставленные аргументы»

    Печать на консоль с расширением приложения

    Как перезаписать файл с помощью NSFileManager при копировании?

    IOS поддерживает OptionsMenu на панели навигации, например Android

    Отображать сообщение предупреждения из viewDidLoad

    Можно ли избежать экрана «использовать» / «перехватить» после съемки фотографии в приложении iOS?

    Удаление дубликатов из массива пользовательских объектов Swift

    Можно ли добавить наблюдателя в tableView.contentOffset?

    Встроенный шрифт IOS в формате PDF

    Иконка расширения приложения не отображается

    popoverContentSize не отвечает в iOS 8

    iOS10 UNNotificationServiceExtension не вызывается

    Как заполнить TableView массивом объектов?

    Давайте будем гением компьютера.