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

全静态类如何存储数据?调用静态方法保存的数据会丢失吗?

你的判断是错误的,这个需求完全可以正常实现,不需要修改任何static关键字。

核心原理

Swift中被static修饰的属性属于类本身,而非类的实例,这类属性在程序运行期间只会初始化一次,存储的内容会在整个程序生命周期内持续保留,不会因为方法调用结束、循环结束就被释放。

你给出的CarsDatabase类里的private static var cars: [Car] = []就是类级别的全局存储属性,你每次调用CarsDatabase.saveCar(vehicle: newCar),都是往这个全局唯一的数组里追加数据,循环多次调用的话,所有解析出来的Car实例都会被依次存入,不会出现下一次循环数据就消失的问题。

验证方法

你可以给CarsDatabase新增一个简单的静态读取方法做验证,不需要修改原有代码的static修饰符:

static func getTotalCars() -> Int {
    return cars.count
}

在你循环调用saveCar结束后,执行打印:

print(CarsDatabase.getTotalCars())

输出的数值就是你成功存入的车辆总数,不会为0,即可证明数据正常存储没有丢失。

内容的提问来源于stack exchange,提问作者Duck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:09:03