Вы можете изменить функцию viewDidLoad
, чтобы сначала проверить UserDefaults
для ключа «goldCount», и, если он имеет значение, используйте его. Если не просто установить счет на 0.
override func viewDidLoad() {
super.viewDidLoad()
formatItems()
let defaults = UserDefaults.standard
if let savedScore = defaults.value(forKey: "goldCount") as? Int {
goldCount = savedScore
} else {
defaults.set(0, forKey: "goldCount")
}
}
Вы можете определить "goldCount" как var goldCount: Int = 0
ниже вашего IBOutlet
s.
Также для дальнейшей оптимизации вы можете извлечь строка "goldCount", используемая как let goldCountKey: String = "goldCount"
и используемая как defaults.set(0, forKey: goldCountKey)
. По моему мнению, избегать жестко запрограммированных строк - хорошая практика, но в данном случае это не так важно.
Чтобы сохранить новое значение при каждом нажатии, добавьте UserDefaults.standard.set(goldCount, forKey: goldCountKey)
в getGoldClicked
. Другая идея заключается в том, чтобы добавить это в функцию AppDelegate
willTerminate
, чтобы убедиться, что вы сохраните свое значение после завершения работы приложения. Хотя для этого потребуются ссылки на значение goldCount, так что нет ru sh.
Надеюсь, это поможет!