swift - 将变量存储到内存 Swift
问题描述
我有一个应用程序,它从 api 收集数据并对这些数据进行一些计算并将其分配给一个变量。当手机插入充电时,这一切都会触发,当手机再次拔出时,我希望它将该号码放入变量中并将其存储到内存中,以便当我第二次打开应用程序时变量保持不变.
我在我的物理设备上构建并运行应用程序,唯一的问题是,一旦我关闭应用程序,我就会丢失所有旧数据(即使我从未“重建”应用程序)。在我看来,这可能是两个原因之一:
- 这在编译器的构建方式中是不可能的,即它不会存储这样的数据并且按预期运行
- 我以某种方式宣布变量错误?
我声明它是我var startCharge : Float = 0
得到var endCharge : Float = 0
的电池
var chargingVar = ""
var batteryLevel: Float {
return UIDevice.current.batteryLevel
}
然后我让手机寻找它何时充电并做事
func batteryStateChanged(){
if (UIDevice.current.batteryState == .charging) {
UIApplication.shared.isIdleTimerDisabled = true
self.chargingVar = "Charging \u{1F603}"
chargingAlert()
getData()
startCharge = batteryLevel
}else{
self.chargingVar = "Not Charging \u{1F622} "
chargingAlert()
setLastValue()
endCharge = batteryLevel
}
最后我想把它放到一个“静态”变量中:P 当我关闭并重新打开应用程序时它会发生变化,let savedCharge = endCharge - startCharge
但这就是它全部下降的地方。请帮忙。
解决方案
您可以轻松地将数据保存/存储在 UserDefault 中,如下所示:-
let savedCharge = endCharge - startCharge
UserDefaults.standard.set(savedCharge, forKey: "chargeData")
UserDefaults.standard.synchronize()
在整个应用程序需要的任何地方检索数据,如下所示:-
var savedChargeData: String? = UserDefaults.standard.object(forKey: "chargeData") as? String
此外,您可以使用以下密钥删除数据:-
UserDefaults.standard.removeObject(forKey: "chargeData")
UserDefaults.standard.synchronize()
推荐阅读
- r - robCompositions imputeUDLs:`[.data.frame`(x, , i) 中的错误:选择了未定义的列
- python-3.x - python mock - 用自身修补方法 - 缺少 1 个必需的位置参数
- spring-boot - Spring Boot 和 R2DBC:io.r2dbc.spi.R2dbcNonTransientResourceException:连接验证失败
- angular - Angular 项目 - 将用户输入添加到下拉菜单中
- c++ - 使用某些线程进行矩阵乘法的 MPI 程序的调试断言失败
- python - 读入带有整个标题的 .dat 文件
- javascript - 使用 RLS 嵌入 PowerBI
- jinja2 - 带有 dbt 宏的动态列的雪花“枢轴”
- android - 如何从firebase Android kotlin获取基于userId的数据?
- json - 发生异常,字符 1 处出现意外字符