在我的应用程序关闭后保存变量 (swift)

Save variable after my app closes (swift)

我正在尝试在 Xcode 中保存一个变量,这样即使在应用程序关闭后它也会保存,但是当我访问它时,我是从几个不同的 类 和文件中进行的,并且在访问变量时更改变量的值。因此类似的线程并不完全适用,要存储的值是一个字符串,这是我到目前为止的代码:

var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(Token, forKey: "") as! String

我相信这是正确的格式,但我不知道如何调用它来更改它,因为当我尝试时我收到一条错误消息,指出预期的声明。

无论如何,我们将不胜感激。

设置值后加default.synchronize()

假设您有一个名为 token

的字符串变量

到save/update设备上的存储值:

NSUserDefaults.standardUserDefaults().setObject(token, forKey: "mytoken")
NSUserDefaults.standardUserDefaults().synchronize()

在上面的代码中,我确保为密钥提供了一个值 ("mytoken")。这样我们以后就可以找到它。

从设备读取存储值:

let token = NSUserDefaults.standardUserDefaults().objectForKey("mytoken") as? String

由于方法 objectForKey returns 是可选的 AnyObject,我将确保将其转换为可选的 String (可选的意思是它要么是 nil 要么有一个值)。

首先,您必须指定一个唯一键来存储变量(在示例 MyKey 中)。

AppDelegate > applicationDidFinishLaunching中用默认值注册密钥。
好处是您可以使用非可选变量,并且您有定义的默认值。

let defaults = UserDefaults.standard
let defaultValue = ["MyKey" : ""]
defaults.register(defaults: defaultValue)

现在您可以从任何地方读取键的值

let defaults = UserDefaults.standard
let token = defaults.string(forKey: "MyKey")

并保存

let defaults = UserDefaults.standard
defaults.set(token, forKey: "MyKey")

Swift 3

(感谢 vadian 的回答)

AppDelegate > applicationDidFinishLaunching 中:

    let defaults = UserDefaults.standard
    let defaultValue = ["myKey" : ""]
    defaults.register(defaults: defaultValue)

保存密钥:

let defaults = UserDefaults.standard
defaults.set("someVariableOrString", forKey: "myKey")
defaults.synchronize()

读取密钥:

    let defaults = UserDefaults.standard
    let token = defaults.string(forKey: "myKey")