首页 > 解决方案 > 将变量存储到内存 Swift

问题描述

我有一个应用程序,它从 api 收集数据并对这些数据进行一些计算并将其分配给一个变量。当手机插入充电时,这一切都会触发,当手机再次拔出时,我希望它将该号码放入变量中并将其存储到内存中,以便当我第二次打开应用程序时变量保持不变.

我在我的物理设备上构建并运行应用程序,唯一的问题是,一旦我关闭应用程序,我就会丢失所有旧数据(即使我从未“重建”应用程序)。在我看来,这可能是两个原因之一:

  1. 这在编译器的构建方式中是不可能的,即它不会存储这样的数据并且按预期运行
  2. 我以某种方式宣布变量错误?

我声明它是我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但这就是它全部下降的地方。请帮忙。

标签: swiftiphonememorybattery

解决方案


您可以轻松地将数据保存/存储在 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()

  

推荐阅读