You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:24:01