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