我几个小时都在讨论这个问题!我只是想更新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...
}
答案 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
值。我认为这是一个错误。