Сброс UserDefaults при выполнении UITests и восстановление по окончании - PullRequest
1 голос
/ 09 октября 2019

Я пытался сбросить и восстановить UserDefaults при запуске UITests и восстановить их, когда они закончатся соответственно. Вот код, который используется в AppDelegate:

func makeDefaultsBackup() {

    guard config.uiTesting else {return}

    if let domainName = Bundle.main.bundleIdentifier {
        self.defaultsBackup = UserDefaults.standard.persistentDomain(forName: domainName)

        UserDefaults.standard.removePersistentDomain(forName: domainName)
    }
}

func applyDefaultsBackup() {

    guard config.uiTesting else { return }

    if let domainName = Bundle.main.bundleIdentifier,
        let persistentDomain = self.defaultsBackup {

        UserDefaults.standard.setPersistentDomain(persistentDomain, forName: domainName)
    }
}

Но после завершения UITests и запуска приложения в базовом режиме все настройки удаляются.

1 Ответ

0 голосов
/ 09 октября 2019

Вы можете использовать UserDefaults.standard.dictionaryRepresentation(), чтобы получить словарь всех сохраненных ключей и сохранить этот словарь где-нибудь за пределами тестовой функции, а затем, когда вы закончите тесты, просто зациклите его и примените каждое значение снова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...