编辑后保存/加载TextField

时间:2018-03-05 08:54:14

标签: iphone swift xcode textfield

我有一个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")
        }


    }

1 个答案:

答案 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()

在用户默认值中设置值后。