使用NSUserDefaults时出错

时间:2016-01-02 17:50:29

标签: ios swift nsuserdefaults

我几个小时都在讨论这个问题!我只是想更新NSUserDefault整数值。

我的代码出了什么问题?这是我得到的例外:

  

***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [Wenger1.ViewController defaultsChanged]:无法识别的选择器发送到实例0x7ffe1ae2b540'

代码:

class ViewController: UIViewController {

    var fod = 0

override func viewDidLoad() {
    super.viewDidLoad()

    let prefs = NSUserDefaults.standardUserDefaults()

    // load fod
    if  prefs.stringForKey("userFOD") != nil {
        FodValue.text = String (prefs.valueForKey("userFOD"))

        // FodValue.text = String (fod)
        print("fod: \(fod)")
        }
}

@IBAction func FOD(sender: AnyObject) {
    fod =  Int(FodValue.text!)!
    //Store fod value
    let prefsFOD = NSUserDefaults.standardUserDefaults()
    prefsFOD.setInteger(fod, forKey: "userFOD") // FAIL HERE...
}

2 个答案:

答案 0 :(得分:-1)

通过查看您的代码,我不知道什么是基本问题。但是,我可以为您提供代码的修改版本。你去吧 -

var fod = 0
let userFODKey = "userFODKey"
let stUserDefaults = NSUserDefaults.standardUserDefaults()

func fetchFodFromUserDefaults() -> Int? {

    if let fod = stUserDefaults.valueForKey(userFODKey) as? Int {
        print("fod: \(fod)")
        return fod
    }
    return nil
}


func saveFodToUserDefaults(fodString: String) {

    if let fodInt = Int(fodString) {
        fod = fodInt
        stUserDefaults.setInteger(fod, forKey: userFODKey)
    }
}

提供数据通话

saveFodToUserDefaults("yourUIElementTextString")

获取数据通话

let value: Int? = fetchFodFromUserDefaults()

答案 1 :(得分:-2)

您正在为integer设置string并从NSUserDefault获取userFOD值。我认为这是一个错误。