执行委托方法后,NSUserDefaults对象为Nil

时间:2015-10-05 09:05:36

标签: ios swift nsuserdefaults

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

价值怎么可以是零?在调用委托方法之前,它是正确的国家,并且中间没有修改此值的代码。

1 个答案:

答案 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()
}
相关问题