在appDelegate中访问和存储viewController变量

时间:2017-01-08 18:54:17

标签: ios swift

这是我的问题:我的viewController中有几个变量,例如:

var money = 0.0

我想在应用程序即将终止时将此值存储在设备上。为此,我需要能够访问appDelegate中的变量并在'applicationWillTerminate'中使用它。然后,我希望它存储在设备上,当应用程序重新启动时,我希望能够再次访问存储的值。我如何在(swift)Xcode 8.2中做到这一点?

1 个答案:

答案 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()时,我们都会安全保存所有内容。