我有一个UIPickerView
,允许用户更改国家/地区的设置。
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(countries[row], forKey: "SelectedCountry")
let test = defaults.stringForKey("SelectedCountry")
delegate?.countryChanged()
}
此test
变量获取正确的值。
但是,当调用委托方法countryChanged时,我收到错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
这是代码:
func countryChanged() {
let defaults = NSUserDefaults.standardUserDefaults()
countryLabel.text = defaults.stringForKey("SelectedCountry")
}
价值怎么可以是零?在调用委托方法之前,它是正确的国家,并且中间没有修改此值的代码。
答案 0 :(得分:-1)
您必须坚持修改NSUserDefaults:
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(countries[row], forKey: "SelectedCountry")
defaults.synchronize() // must call synchronize here to save your modifications
let test = defaults.stringForKey("SelectedCountry")
delegate?.countryChanged()
}