我正在尝试在Xcode中保存一个变量,以便即使在应用程序关闭后也可以保存,但是当我访问它时,我从几个不同的类和文件中执行它,并且我在更改变量的值时我访问它。因此类似的线程不完全适用,要存储的值是一个字符串,这是我到目前为止的代码:
var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(Token, forKey: "") as! String
我相信这是正确的格式,但我不知道如何调用它来更改它,因为当我尝试时会收到一条错误消息,说明预期的声明。
无论如何,我们非常感谢任何帮助。
答案 0 :(得分:14)
首先,您必须指定一个唯一键来存储变量(在示例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")
答案 1 :(得分:5)
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")
答案 2 :(得分:4)
我们假设您有一个名为token
保存/更新设备上存储的值:
NSUserDefaults.standardUserDefaults().setObject(token, forKey: "mytoken")
NSUserDefaults.standardUserDefaults().synchronize()
在上面的代码中,我确保给键一个值(" mytoken")。这样我们以后才能找到它。
要从设备读取存储的值:
let token = NSUserDefaults.standardUserDefaults().objectForKey("mytoken") as? String
由于方法objectForKey
会返回一个可选的AnyObject
,我确保将其投放到可选的String
(可选意味着它是零或者有价值)。
答案 3 :(得分:-4)
设置值后添加default.synchronize()
。