Обновление: я попытался изменить setValue на setObject, и произошла ошибка. При дальнейшем исследовании с точками останова и LLDB они равны нулю, прежде чем контроллер будет даже представлен. Я не спас их правильно.NSUserDefaults Значение потери в Swift
Я пытаюсь просто сохранить пару строк текста и отобразить их на другом экране с помощью Swift. Я не уверен, почему мне так тяжело. Вот как я пытаюсь сделать это: VC1
@IBAction func registerTapped(sender : AnyObject)
// Save the login information
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setValue(username.text, forKey: "username")
defaults.setValue(password.text, forKey: "password")
if firstName.text.isEmpty == false {
defaults.setValue(firstName.text, forKey: "firstname")
}
if lastName.text.isEmpty == false {
defaults.setValue(lastName.text, forKey: "lastname")
}
let profileView = ProfileViewController()
self.presentViewController(profileView, animated: true, completion: nil)
}
}
охладиться. Это похоже на правильный способ сохранения строк в UITextFields на основе моих исследований. Итак, я открываю VC2 и попытаться загрузить сохраненный текст в новых UITextField, как и так:
override func viewDidLoad() {
super.viewDidLoad()
let defaults = NSUserDefaults.standardUserDefaults()
username.text = defaults.stringForKey("username")
password.text = defaults.stringForKey("password")
if let first = defaults.stringForKey("firstname")
{
firstName.text = first
}
if let last = defaults.stringForKey("lastname") {
lastName.text = last
}
}
я получаю аварию fatal error: unexpectedly found nil while unwrapping an Optional value
. Я часами тренировался в учебных пособиях и не мог для жизни понять, что я делаю неправильно.
Это потому, что это необязательно? Это мой выход LLDB:
Использование 'SetObject: forKey:' вместо 'SetValue: forKey:' – AdamPro13
Пробовал что уже, не работает. – John
'defaults.synchronize()'? –