将变量存储到内存 Swift
Storing Variables to Memory Swift
我有一个应用程序可以从 api 收集数据并对这些数据进行一些计算并将其分配给一个变量。当 phone 插入充电时,这一切都会被触发,当 phone 再次拔下时,我希望它将该数字放入一个变量并将其存储到内存中,以便变量保持不变当我第二次打开应用程序时。
我在我的物理设备上构建并 运行 应用程序,唯一的问题是,一旦我关闭应用程序,我就会丢失所有旧数据(即使我从未“重建”应用程序)。在我看来,这可能是以下两个原因之一:
- 这在构建编译器的方式中是不可能的,即它不会像那样存储数据并且按预期运行
- 我以某种方式声明变量错误?
我将其声明为 var startCharge : Float = 0
和 var 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")
我有一个应用程序可以从 api 收集数据并对这些数据进行一些计算并将其分配给一个变量。当 phone 插入充电时,这一切都会被触发,当 phone 再次拔下时,我希望它将该数字放入一个变量并将其存储到内存中,以便变量保持不变当我第二次打开应用程序时。
我在我的物理设备上构建并 运行 应用程序,唯一的问题是,一旦我关闭应用程序,我就会丢失所有旧数据(即使我从未“重建”应用程序)。在我看来,这可能是以下两个原因之一:
- 这在构建编译器的方式中是不可能的,即它不会像那样存储数据并且按预期运行
- 我以某种方式声明变量错误?
我将其声明为 var startCharge : Float = 0
和 var 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")