我有一个TextField
这个应用程序和一个保存按钮,我想在我编辑后关闭时保存,并在我打开时加载,但我无法弄明白。
我已经写了一些东西,但是当我试图开始时总会有
错误:“致命1:致命错误:在解开时意外发现零 一个可选值“
这是代码(位于我的ViewController
中),但我不知道它是否是最好的方法:
@IBOutlet weak var numText: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
if UserDefaults.standard.object(forKey: "num") == nil {
numText.text = "15"
}
else {
let number = UserDefaults.standard.object(forKey: "num") as! String
numText.text = number
}
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func saveButtonPressed(_ sender: UIButton) {
if numText.text == nil {
UserDefaults.standard.set("15", forKey: "num")
}
else {
UserDefaults.standard.set(numText.text, forKey: "num")
}
}
答案 0 :(得分:0)
在ViewController中将文本添加为计算属性:
var SAVEDTEXTKEY = "num"
var savedText: String? {
set{
guard let value = newValue else {
UserDefaults.standard.removeObject(forKey: SAVEDTEXTKEY)
UserDefaults.standard.synchronize()
return
}
UserDefaults.standard.set(value, forKey: SAVEDTEXTKEY)
UserDefaults.standard.synchronize()
}
get{
return UserDefaults.standard.string(forKey: SAVEDTEXTKEY)
}
}
之后,当您想保存时,只需执行:
self.savedText = self.numText?.text
当你想要检索它时,只需:
self.numText.text = self.savedText
我认为问题是你没有打电话
UserDefaults.standard.synchronize()
在用户默认值中设置值后。