我是斯威夫特的新人,并且已经坚持了一段时间。我认为这是因为没有全面了解语言,但任何帮助都会受到高度赞赏。
我正在创建一个基本的门禁计数器(用于计算到达事件的人数)
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中。
答案 0 :(得分:2)
didSet
观察员。integerForKey
和setIntegerForKey
当你将所有这些放在一起时,它简化为:
@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")
}