Есть ли способ установить значение при первом запуске и использовать его, если приложение уже запущено?

#ios #swift

#iOS #swift

Вопрос:

Я получаю разрешение от пользователя только при первом запуске, и если он / она одобряет, я хочу выполнить некоторые функции. Я использую логическую переменную, если он / она нажмет ok, переменная будет true и выполнит функции, но моя проблема в том, что при втором запуске приложения я не знаю, одобрил ли пользователь или нет.

Здесь я проверяю, является ли это первым запуском

 if (isFirstLaunch()){
    self.AlertOnce(Message: " hello may i use ....")
}
  

Это код предупреждающего сообщения:

 func AlertOnce (Message: String){
    let alert1 = UIAlertController(title: "أهلا بك", message: Message, preferredStyle: UIAlertController.Style.alert)

    alert1.addAction(UIAlertAction(title: "موافق", style: UIAlertAction.Style.default, handler: { ACTION in
        self.saveQuestion = true
        print("OK")
    }))

    alert1.addAction(UIAlertAction(title: "غير موافق", style: UIAlertAction.Style.destructive, handler:{ ACTION in
        self.saveQuestion = false
        print("Not OK")
    }

    ))
    self.present(alert1, animated: true, completion: nil)
}
  

И это функция:

 if (saveQuestion){
    ref.child("QuestionOfUsers").childByAutoId().setValue(label1.text)
    label1.text = ""
}
  

Ответ №1:

Если я правильно понял, что вам нужно, это постоянное хранилище, например, база данных, или userdefaults.

Пример для сохранения:

 let value = true
UserDefaults.standard.set(value, forKey: "saveQuestion")
  

Пример получения ранее сохраненного значения:

 let value = UserDefaults.standard.object(forKey: "saveQuestion") as? Bool
  

Надеюсь, это удовлетворит ваши потребности.

Комментарии:

1. «UserDefaults.standard.synchronize()» не требуется

2. Да, я только что понял, что оно устарело. Это для заметки.

Ответ №2:

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

 func AlertOnce (Message: String){

    let alert1 = UIAlertController(title: "أهلا بك", message: Message, preferredStyle: UIAlertController.Style.alert)
    alert1.addAction(UIAlertAction(title: "موافق", style: UIAlertAction.Style.default, handler: { ACTION in
        UserDefaults.standard.set(true, forKey: "SaveQuestion")
        print("OK")

    }))

    alert1.addAction(UIAlertAction(title: "غير موافق", style: UIAlertAction.Style.destructive, handler:{ ACTION in
        UserDefaults.standard.set(false, forKey: "SaveQuestion")

        print("Not OK")
    }

    ))
    self.present(alert1, animated: true, completion: nil)
}
  

Пользовательские значения по умолчанию можно прочитать следующим образом

 let saveQuestion = UserDefaults.standard.bool(forKey: "SaveQuestion")
if (saveQuestion){
    ref.child("QuestionOfUsers").childByAutoId().setValue(label1.text)
    label1.text = ""
}
  

Комментарии:

1. Нет … вам не нужно ничего делать, пока приложение завершается .. это исключение не имеет ничего общего с этим кодом