正如蘋果文檔所說,「applicationWillTerminate」不會在現代應用程序中被調用,除非您在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(時間),我們是安全的一切都將被保存。
如果此值需要安全,那麼我會考慮查看Keychain,同樣使用上述方法在每次更新時保存該值。依賴單個應用程序事件可能會導致數據丟失,例如應用程序崩潰,因此不會觸發應用程序委託事件。 –