Установка глобальных переменных с помощью UserDefaults - PullRequest
0 голосов
/ 31 мая 2018

Я относительно новичок в этом и попробовал немного кода, но столкнулся с проблемой.

В моем приложении у меня есть глобальная переменная, которая отслеживает, выбрал ли пользователь свое имя пользователя или нет.Как только он выбрал свое имя, я хочу установить для этой переменной значение true, чтобы я мог отключить переход, который приводит к имени пользователя ViewController.

Но я не могу предварительно установить переменную, так как код будет повторно инициализироватьпеременная каждый раз, когда я снова открываю приложение.И у меня все еще есть проблемы с его настройкой с помощью UserDefaults.

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

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Получатели UserDefaults вернут nil, если он не установлен, поэтому вам не нужно устанавливать bool, просто проверьте, установлено ли значение следующим образом:

if let username = UserDefaults.standard.string(forKey:"username") {
    // user has created username, and username has the unwrapped value in it
} else {
    // go to set username screen
}

Убедитесь, что послеперейдите к экрану установки имени пользователя и задайте ключ имени пользователя в UserDefaults:

UserDefaults.standard.string(value, forKey:"username")

Где value - это введенное значение.

Если вы хотите сбросить значение в UserDefaults(т.е. они выходят из системы) используют функцию removeObject:

UserDefaults.standard.removeObject(forKey:"username")

Это сделает так, что UserDefaults.standard.string(forKey:"username") вернет nil снова.

Добавление bool для проверки просто сделает одинбольше винтиков, которые могут все испортить, если вы забудете установить его ...

0 голосов
/ 31 мая 2018

Установите значение bool для userDefault

UserDefaults.standard.setBool(true, forKey: "is_userName") 

И восстановите значение для проверки

if UserDefaults.standard.bool(forKey: "is_userName"){
      // User have created username 
  }else {
      // Go to set username screem
  }
...