[英]Accessing and storing viewController variables in appDelegate
這是我的問題:例如,我的viewController中有幾個變量:
var money = 0.0
我想在應用程序終止時將這個值存儲在設備上。 為此,我需要能夠在appDelegate中訪問變量並在“ applicationWillTerminate”中使用它。 然后,我希望將其存儲在設備上,並且當應用程序重新啟動時,我希望能夠再次訪問存儲的值。 如何在(快速)Xcode 8.2中做到這一點?
如Apple文檔所述,“ 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()時,我們都會安全保存所有內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.