Понимание метода регистрации UserDefaults - PullRequest
0 голосов
/ 08 декабря 2018

Прежде всего, позвольте мне сказать, что это НЕ жалоба, я просто хочу понять, как работает метод register(defaults: []).

Я использую метод UserDefaults register(defaults: []) внутри didFinishLaunchingWithOptions метод для регистрации значения по умолчанию всех моих ключей UseDefault, все работает нормально, как и ожидалось.

Мой вопрос: почему значения в методе register(defaults: []) не сбрасываются каждый раз, когда didFinishLaunchingWithOptions метод называется?

Я не хочу, чтобы они отдыхали. Я просто пытаюсь понять, почему.

У меня есть следующий код ...

func application(...didFinishLaunchingWithOptions...) -> Bool {

    UserDefaults.standard.register(defaults: [
        keyUserName:"",
        keyHasCar:false
        ])
}

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

Опять же,Я не хочу ценитьЧтобы сбросить, мне просто нужно понять, как работает метод register.

1 Ответ

0 голосов
/ 08 декабря 2018

Из документации для register(defaults:):

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

Содержимое домена регистрации не записывается на диск;Вы должны вызывать этот метод каждый раз, когда ваше приложение запускается.

Это означает, что зарегистрированные значения по умолчанию действуют как откат к нормальным пользовательским настройкам по умолчанию, с которыми вы работаете.Зарегистрированные значения по умолчанию не перезаписывают и не заменяют стандартные пользовательские значения по умолчанию.

Когда вы пытаетесь найти ключ из UserDefaults.standard, если ключ не существует, то он ищется в зарегистрированных значениях по умолчанию, и этовозвращается результат (если таковой имеется).

Как только вы установите значение в UserDefaults.standard, конечно, именно это значение возвращается для ключа.Если вы удалите ключ из UserDefaults.standard, тогда снова будет использоваться зарегистрированное значение по умолчанию.

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