当我尝试将另一个值保存到原始变量时,Swift保存数据并崩溃

Jas*_*son 1 xcode swift

我的主要问题是在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)

xpq*_*pqz 6

你正在创建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/.