我的应用关闭后保存变量(快速)

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

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

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

无论如何,任何帮助将非常感激。

首先,您必须指定一个唯一键来存储变量(在示例中为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") 

斯威夫特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") 

假设您有一个名为token的字符串变量

要保存/更新设备上存储的值:

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

在上面的代码中,我确保给键一个值(“mytoken”)。 这样我们以后才能找到它。

要从设备读取存储的值:

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

由于方法objectForKey返回一个可选的AnyObject ,我将确保将它AnyObject转换为可选的String (可选意味着它是nil或具有值)。

设置值后添加default.synchronize()