Swift开发:如何让变量在应用关闭后仍然保留原有数值?
解决方案
你当前的counting变量仅存储在App运行内存中,进程终止后数据会自动释放,需要通过持久化存储能力保留数据。对于这种轻量单值的存储场景,优先使用系统自带的UserDefaults实现,代码改动极小:
修改后完整代码
import UIKit // 改用计算属性自动绑定UserDefaults存取逻辑 var counting: Int { get { // 读取存储的数值,无历史数据时默认返回0 return UserDefaults.standard.integer(forKey: "savedHomeworkCount") } set { // 新值自动写入持久化存储 UserDefaults.standard.set(newValue, forKey: "savedHomeworkCount") } } class ViewController: UIViewController { @IBOutlet weak var label: UILabel! @IBAction func button(_ sender: Any) { counting += 1 label.text = "You did \(counting) homeworks" } override func viewDidLoad() { super.viewDidLoad() // 启动时读取历史计数显示到label label.text = "You did \(counting) homeworks" } }
说明
UserDefaults是iOS系统内置的轻量持久化方案,专门用于存储小体量的配置、计数类数据,App重启、系统重启都不会丢失数据- 这里用计算属性封装了读写逻辑,原有点击按钮的计数逻辑不需要做任何修改,仅需补充启动时的初始值赋值即可
- 如果你后续需要存储更复杂的结构化数据,可以选择Core Data、沙盒文件写入等方案,当前场景
UserDefaults完全满足需求
内容的提问来源于stack exchange,提问作者Japanian
相关产品推荐
相关产品推荐

