将变量存储到内存 Swift

Storing Variables to Memory Swift

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

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

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

我将其声明为 var startCharge : Float = 0var endCharge : Float = 0 以及我得到的电池

var chargingVar = ""
    var batteryLevel: Float {
          return UIDevice.current.batteryLevel
      }

然后我让 phone 寻找充电时间并做一些事情

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

您可以轻松save/store 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()

  

我首先将变量声明为:

var startCharge : Double = 0
var lastCharge : Double = UserDefaults.standard.double(forKey: "lastCharge")

然后在函数中只设置函数中的变量

startCharge = batteryLevel
endCharge = batteryLevel

UserDefaults.standard.set(lastCharge, forKey: "lastCharge")