Я пытаюсь создать запоминающуюся мне функциональность, и для этого мне нужно использовать NSUserDefaults для сохранения данных в кеше. Но он всегда сохраняет nil string, любезно проверяю мой код.defaults.setValue сохранить значение всегда nil string
struct defaultsKeys {
static let email = ""
static let pass = ""
static let remember = "0"
}
@IBAction func btn_rememberMe(sender: UIButton) {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey(defaultsKeys.remember) == "0" {
defaults.setValue("1", forKey: defaultsKeys.remember)
btno_rememberMe.setImage(UIImage(named: "login_tickSelected.png"), forState: .Normal)
}
else {
defaults.setValue("0", forKey: defaultsKeys.remember)
btno_rememberMe.setImage(UIImage(named: "login_tickUnselected.png"), forState: .Normal)
}
defaults.synchronize()
}
Код Сохранить Email и Пароль:
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey(defaultsKeys.remember) == "1" {
defaults.setValue(String(self.txt_email.text!), forKey: defaultsKeys.email)
defaults.setValue(String(self.txt_pass.text!), forKey: defaultsKeys.pass)
print(defaults.stringForKey(defaultsKeys.email)!)
print(txt_email.text!)
}
else {
defaults.setValue("", forKey: defaultsKeys.email)
defaults.setValue("", forKey: defaultsKeys.pass)
}
defaults.synchronize()
код для Обновить данные на экране:
override func viewDidLoad() {
super.viewDidLoad()
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey(defaultsKeys.remember) == "0" {
btno_rememberMe.setImage(UIImage(named: "login_tickUnselected.png"), forState: .Normal)
}
else {
btno_rememberMe.setImage(UIImage(named: "login_tickSelected.png"), forState: .Normal)
txt_email.text = defaults.stringForKey(defaultsKeys.email)
txt_pass.text = defaults.stringForKey(defaultsKeys.pass)
}
defaults.synchronize()
}
Это экономия Запоминаем значение, но не адрес электронной почты и пароль.
Потому что вы используете * пустые строки * в качестве ключей для электронной почты и пароля. –
Нет, я добавляю текст в текстовое поле, и я также напечатал его, а текст текстового поля не пуст –
Да: 'defaultsKeys.email' определяется как пустая строка. Поэтому * key * для пользовательских значений по умолчанию является пустой строкой (а не значением). –