这是我的问题:我的viewController中有几个变量,例如:
var money = 0.0
我想在应用程序即将终止时将此值存储在设备上。为此,我需要能够访问appDelegate中的变量并在'applicationWillTerminate'中使用它。然后,我希望它存储在设备上,当应用程序重新启动时,我希望能够再次访问存储的值。我如何在(swift)Xcode 8.2中做到这一点?
答案 0 :(得分:1)
" applicationWillTerminate"正如Apple文档所说,除非你在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
}
每当我们调用UserDefaults.standard.synchronize()时,我们都会安全保存所有内容。