我的主要问题之一是在 Core Data 之外保存和检索数据。
我希望用持久数据保存 1 个变量。
例程在第二次按下按钮后崩溃。
override func viewDidLoad() {
super.viewDidLoad()
var amy="2"
NSUserDefaults.standardUserDefaults().setObject((amy), forKey: "ggpass")
}
@IBAction func pass(sender: AnyObject) {
// Retrieve the original Variable
NSUserDefaults.standardUserDefaults().synchronize()
var aname5 = (NSUserDefaults.standardUserDefaults().objectForKey("ggpass"))! as String
gpass = (aname5.toInt())!
gpass=gpass+1
///Save Data
NSUserDefaults.standardUserDefaults().setObject((gpass), forKey: "ggpass")
}
最佳答案
您正在将 NSUserDefaults
创建为一个字符串,假设它是一个字符串来读取它,然后将它写回一个数字 - 这是行不通的。您需要坚持使用数字作为您的值或字符串。这是一个坚持使用字符串的版本 - 有点笨拙,但最接近您现有的代码:
@IBAction func pass(sender: AnyObject) {
var aname5 = NSUserDefaults.standardUserDefaults().objectForKey("ggpass") as? String
if let gpass = aname5?.toInt() {
NSUserDefaults.standardUserDefaults().setObject("\(gpass+1)", forKey: "ggpass")
}
}
请注意,您不需要在 iOS8 或 Yosemite 中调用 synchronize()
,请参阅 http://www.codingexplorer.com/nsuserdefaults-a-swift-introduction/ .
关于xcode - 当我尝试将另一个值保存到原始变量时,Swift 保存数据并崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28070965/