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

标签 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")


    }

最佳答案

您正在将 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/

相关文章:

swift - 如何将数据附加到压缩文件?

ios - 设备上的键盘扩展崩溃

ios - ld : framework not found AudioUnit, ios9

swift - 方法无法标记为@objc,因为参数 3 的类型无法在 Objective-C 中表示 - @objc func 中无法识别错误类型?

ios - 在 Swift 中禁用按钮

ios - 从推送通知启动时,launchOptions 始终为零

ios - 设置 TeamCity 以集成到 OSX Build Agent

ios - 为什么我在一个 Xcode 安装中看到以下警告,而在另一个安装中却看不到?

iphone - 如何使用 NSURLResponse 作为 segue 触发器 swift

ios - 强制手动关闭 iOS 共享表 Swift iOS 8 和 9