UserDefaults не сохраняет свое значениеIOS

Программируем под IOS
Ответить
Anonymous
 UserDefaults не сохраняет свое значение

Сообщение Anonymous »

Я создаю приложение для iOS, в котором пользователи должны пройти процедуру регистрации, прежде чем получить доступ к главному главному экрану. Во время регистрации пользователь вводит такие данные, как псевдоним и страну.

После завершения регистрации я устанавливаю флаг в UserDefaults:

Код: Выделить всё

UserDefaults.standard.set(true, forKey: "hasCompletedOnboarding")
print("hasCompletedOnboarding:", UserDefaults.standard.bool(forKey: "hasCompletedOnboarding"))
Это правильно печатает hasCompletedOnboarding: true.
В моем SceneDelegate я проверяю флаг следующим образом:

Код: Выделить всё

let hasCompletedOnboarding = UserDefaults.standard.bool(forKey: "hasCompletedOnboarding")
Если hasCompletedOnboarding имеет значение false, я показываю регистрацию. Если это правда, я показываю основной интерфейс.
Проблема:
Если я подожду около 10 секунд, принудительно закрою приложение и снова открою его, hasCompletedOnboarding выведет false в SceneDelegate, и онбординг отобразится снова, хотя я подтвердил, что он был сохранен как true перед закрытием приложения.
Итак UserDefaults правильно сохраняется во время регистрации, но после перезапуска возвращает false.
Что может быть причиной этого? Я что-то упускаю из того, как UserDefaults работает со SceneDelegate или жизненным циклом приложения? Любые идеи и советы приветствуются.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -its-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»