簡體   English   中英

在appDelegate中訪問和存儲viewController變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM