在我的应用程序关闭后保存变量 (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")
我正在尝试在 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")