我的主要问题是在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")
}
Run Code Online (Sandbox Code Playgroud)
你正在创建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")
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要synchronize()在iOS8或Yosemite中进行调用,请参阅http://www.codingexplorer.com/nsuserdefaults-a-swift-introduction/.