Ios 我的应用程序关闭后保存变量(swift)
我正试图在Xcode中保存一个变量,这样即使在应用程序关闭后它也会保存,无论何时当我访问它时,我都会从几个不同的类和文件中进行操作,当我访问它时,我会更改变量的值。因此,类似的线程并不完全适用,要存储的值是一个字符串,以下是我迄今为止的代码:Ios 我的应用程序关闭后保存变量(swift),ios,xcode,swift,variables,nsuserdefaults,Ios,Xcode,Swift,Variables,Nsuserdefaults,我正试图在Xcode中保存一个变量,这样即使在应用程序关闭后它也会保存,无论何时当我访问它时,我都会从几个不同的类和文件中进行操作,当我访问它时,我会更改变量的值。因此,类似的线程并不完全适用,要存储的值是一个字符串,以下是我迄今为止的代码: var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults() defaults.setObject(Token, forKey: "") as! String 我相信这是正确的格
var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(Token, forKey: "") as! String
我相信这是正确的格式,但我不知道如何调用它来更改它,因为当我尝试时,我会收到一条错误消息,上面显示expected declaration
无论如何,任何帮助都将不胜感激。在设置值后添加
default.synchronize()
。假设您有一个名为token的字符串变量
要在设备上保存/更新存储的值,请执行以下操作:
NSUserDefaults.standardUserDefaults().setObject(token, forKey: "mytoken")
NSUserDefaults.standardUserDefaults().synchronize()
let token = NSUserDefaults.standardUserDefaults().objectForKey("mytoken") as? String
在上面的代码中,我确保给键一个值(“mytoken”)。这是为了我们以后能找到它
要从设备读取存储值,请执行以下操作:
NSUserDefaults.standardUserDefaults().setObject(token, forKey: "mytoken")
NSUserDefaults.standardUserDefaults().synchronize()
let token = NSUserDefaults.standardUserDefaults().objectForKey("mytoken") as? String
由于方法objectForKey
返回可选的AnyObject
,我将确保将其转换为可选的字符串(可选的意思是它要么为nil,要么有值)。首先必须指定一个唯一的键来存储变量(在示例MyKey
中)
在AppDelegate>applicationdFinishLaunching
中,使用默认值注册密钥。
好处是您可以使用非可选变量,并且您有一个定义的默认值
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
(感谢瓦迪安的回答)
在AppDelegate>applicationdFinishLaunching
中:
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")
什么是!字符串
for?我觉得有必要把它变成字符串?我对swift有点陌生诚实如何更改值,很抱歉我在这里完全迷路了你能说得更具体一点吗?调用synchronize()
是不必要的。我将此代码添加到Appdelegate,然后当值更改时,我将添加两行,对吗?当您要将令牌保存到设备时,在代码中的任何位置添加两行(setObject…和synchronize…),是的。您不需要同步。事实上,强制这样做可能是个问题。在文档和许多问答中都有解释。示例:Soooo,我什么时候想要更改值?我应该怎么做?读取值,更改它,然后从任何你想要的地方写回来。通常,该值在视图控制器的viewDidLoad()
或viewwillispect()
中读取到实例变量中。此实例变量可以更改并可以写回,例如,当视图控制器离开时,在viewwilldemouse()
中。sooo'let defaults=NSUserDefaults.standardUserDefaults()let token=defaults.stringForKey(global.token)'作为新值的全局标记吗,但是如果您想修改标记
请使用var标记
。请同时阅读文档:当应用程序重新打开时,我将如何获取值您不需要同步
。事实上,强制这样做可能是个问题。在文档和许多问答中都有解释。例子: