全静态类如何存储数据?调用静态方法保存的数据会丢失吗?
你的判断是错误的,这个需求完全可以正常实现,不需要修改任何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
相关产品推荐
相关产品推荐

