Ios 在appDelegate中访问和存储viewController变量
我的问题是:我的viewController中有几个变量,例如:Ios 在appDelegate中访问和存储viewController变量,ios,swift,Ios,Swift,我的问题是:我的viewController中有几个变量,例如: var money = 0.0 我想在应用程序即将终止时立即将此值存储在设备上。为此,我需要能够访问appDelegate中的变量,并在“applicationWillTerminate”中使用它。然后,我希望它存储在设备上,当应用程序重新启动时,我希望能够再次访问存储的值。如何在(swift)Xcode 8.2中实现这一点?正如苹果文档所说,“应用程序将终止”在现代应用程序中不再被调用,除非您在plist中设置了特定标志。 正
var money = 0.0
我想在应用程序即将终止时立即将此值存储在设备上。为此,我需要能够访问appDelegate中的变量,并在“applicationWillTerminate”中使用它。然后,我希望它存储在设备上,当应用程序重新启动时,我希望能够再次访问存储的值。如何在(swift)Xcode 8.2中实现这一点?正如苹果文档所说,“应用程序将终止”在现代应用程序中不再被调用,除非您在plist中设置了特定标志。
正确的方法是将值存储在NSUserDefault中:
对于swift 3.0:
1) 让我们创建一个类来管理资金并节省资金:
class MoneyManager: NSObject {
private let MONEY_KEY = "money"
static let sharedInstance = MoneyManager()
var money: Float? {
get {
let returnValue = UserDefaults.standard.object(forKey: MONEY_KEY) as? Float
return returnValue
}
set(newValue){
if newValue == nil {
UserDefaults.standard.removeObject(forKey: MONEY_KEY)
} else {
UserDefaults.standard.set(newValue!, forKey: MONEY_KEY)
}
UserDefaults.standard.synchronize()
}
}
}
2) 要在您需要的每个控制器中使用它,请执行以下操作:
let money = MoneyManager.sharedInstance.money
if money == nil{
MoneyManager.sharedInstance.money = 1000
}
每当我们调用UsService Debug .Stimult.SimuleId()时,我们都是安全的。
如果这个值需要是安全的,那么我会考虑查看密钥链,也可以使用上面的方法每次更新时保存该值。依赖单个应用程序事件可能会导致数据丢失,例如应用程序崩溃,因此不会触发应用程序委派事件。