将两个@IBAction函数中的整数存储到NSUserDefaults Swift中

时间:2015-03-29 18:12:59

标签: ios swift nsuserdefaults

我是斯威夫特的新人,并且已经坚持了一段时间。我认为这是因为没有全面了解语言,但任何帮助都会受到高度赞赏。

我正在创建一个基本的门禁计数器(用于计算到达事件的人数)

var counterNumber = 0


@IBOutlet weak var counterLabel: UILabel!

一个按钮计数

@IBAction func countUp(sender: UIButton) {
    counterNumber += 1
    counterLabel.text = "\(counterNumber)"
    var counterNumberAdd = counterLabel.text
    func saveCounterNumber(number:NSNumber){
        NSUserDefaults.standardUserDefaults().setObject(counterNumberAdd, forKey: "addcounterNumber")
        NSUserDefaults.standardUserDefaults().synchronize()
    }}

和一个倒计时

@IBAction func countDown(sender: UIButton) {
    let countersub: () = counterNumber -= 1
    counterLabel.text = "\(counterNumber)"
    var counterNumberSub = counterLabel.text
    func saveCounterNumber(number:NSNumber){
        NSUserDefaults.standardUserDefaults().setObject(counterNumberSub, forKey: "subcounterNumber")
        NSUserDefaults.standardUserDefaults().synchronize()
    }

}

我试图将计数存储在上面的func中,但我很难回忆起数据并创建一个函数来解析这两个变量并将其存储在应用程序的NSUserDefaults中。

1 个答案:

答案 0 :(得分:2)

  1. 您使用的是NSUserDefaults,而不是Core Data。
  2. 您应该在保存counterNumber
  3. 时保存标签的文本值
  4. 你的IBAction中有一个功能,这个功能是无聊的,甚至不被叫。
  5. 如果您尝试执行1 up 1 down计数器,则不应将这些值保存为两个不同的NSUserdefaults值
  6. 每次都不需要同步NSUserDefaults
  7. 如果您想在每次更新号码时更新标签,请使用didSet观察员。
  8. 如果您正在处理特定类型(即Int),您可以使用NSUserDefault的integerForKeysetIntegerForKey
  9. 当你将所有这些放在一起时,它简化为:

    @IBOutlet weak var numberLabel: UILabel!
    
    var counterNumber: Int = NSUserDefaults.standardUserDefaults().integerForKey("counterNumber") {
        didSet {
            numberLabel.text = "\(self.counterNumber)"
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        numberLabel.text = "\(self.counterNumber)"
    }
    
    @IBAction func downButtonPressed(sender: UIButton) {
        NSUserDefaults.standardUserDefaults().setInteger(--counterNumber, forKey: "counterNumber")
    }
    
    @IBAction func upButtonPressed(sender: UIButton) {
        NSUserDefaults.standardUserDefaults().setInteger(++counterNumber, forKey: "counterNumber")
    }