我是Swift的新手并且已经尝试过搜索这个主题,但我不知道它是如何被调用的,所以我现在就问它。我想制作一种Cookie Clicker。每次按下按钮都会有更多的钱。 当我打开应用程序时,我已经设法保存“钱”,但现在我想在点击按钮时添加到“旧”钱。有谁知道怎么做?
这是我的代码:
import UIKit
import AVFoundation
var employers = 0
var money = 0
class ViewController: UIViewController {
@IBOutlet var score: UILabel!
@IBOutlet var moneysecond: UILabel!
@IBOutlet var employees: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func clickbutton(_ sender: Any) {
money = money + 20
score.text = "$\(money).-"
UserDefaults.standard.set(score.text, forKey: "dollar")
score.text = "$\(money).-"
}
override func viewDidAppear(_ animated: Bool) {
if let x = UserDefaults.standard.object(forKey: "dollar") as? String {
score.text = x
}
}
}
答案 0 :(得分:1)
不要将部分 String
存储到UserDefaults
中,而是存储money
的实际值,例如Int
。并且最初设定货币价值。
现在您将显示的文本设置为您存储的值,然后单击并增加一个money
变量,该变量没有任何来处理从UserDefaults读取的值因此,您将丢失上次应用程序运行期间之前设置的信息。
提案:
money
移至ViewController
viewDidLoad
以将UserDefaults.standard.integer(forKey: "dollar")
的值读入money
viewDidAppear
中使用money
的值来设置文字
clickbutton
中移除了第一个或第二个score.text
作业,但不在score.text
money
而是UserDefaults
答案 1 :(得分:0)
实际上这与luk2302的建议相同,但在代码中
class ViewController: UIViewController {
@IBOutlet var score: UILabel!
@IBOutlet var moneysecond: UILabel!
@IBOutlet var employees: UILabel!
var money = 0
var employers = 0
override func viewDidLoad() {
super.viewDidLoad()
money = UserDefaults.standard.integer(forKey: "dollar")
}
@IBAction func clickbutton(_ sender: Any) {
money = += 20
score.text = "$\(money).-"
UserDefaults.standard.set(money, forKey: "dollar")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
score.text = "$\(money).-"
}
}