Emm*_*aro 12 xcode boolean nsuserdefaults ios swift
我正在努力弄清楚如何使用swift将一个bool保存到NSUserDefaults来执行if语句.我相信我知道如何将bool保存到NSUserDefaults,但是对此的确认将非常感激.这是我试图弄清楚如何使用swift的Objective-c代码.
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"onoroff"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"onoroff"];
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止迅速...
if NSUserDefaults.standardUserDefaults().objectForKey("onoroff") != nil{
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
}
Run Code Online (Sandbox Code Playgroud)
我想我可能已经弄清楚了.任何人都可以确认这是将bool保存到NSUserDefaults并使用if语句的正确方法.这里是...
if !NSUserDefaults.standardUserDefaults().boolForKey("onoroff"){
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff")
}else{ NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
}
Run Code Online (Sandbox Code Playgroud)
if NSUserDefaults.standardUserDefaults().boolForKey("onoroff") == true
Run Code Online (Sandbox Code Playgroud)
以上代码仅检查密钥的值是否为真.
要么
if NSUserDefaults.standardUserDefaults().objectForKey("onoroff")
Run Code Online (Sandbox Code Playgroud)
如果密钥没有值,上面的代码检查密钥的值是否为真.(表示在"onoroff"的UserDefault中插入Nothing).
编辑
if !NSUserDefaults.standardUserDefaults().objectForKey("onoroff")
{
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff")
}
else
{
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
}
Run Code Online (Sandbox Code Playgroud)
在Swift 3.0中
let defaults = UserDefaults.standard
Run Code Online (Sandbox Code Playgroud)
它创建标准默认文件并在其不存在时进行配置,如果存在则将其打开.
if !UserDefaults.standard.bool(forKey: "onoroff") {
UserDefaults.standard.set(true, forKey: "onoroff")
} else {
UserDefaults.standard.set(false, forKey: "onoroff")
}
Run Code Online (Sandbox Code Playgroud)
if !defaults.standard.bool(forKey: "onoroff") {
defaults.standard.set(true, forKey: "onoroff")
} else {
defaults.standard.set(false, forKey: "onoroff")
}
Run Code Online (Sandbox Code Playgroud)
谢谢@Fred纠正答案:-)
接受的答案是正确的.这是我喜欢的方式(Swift 3.0):
struct Settings {
fileprivate struct Keys {
static let soundKey = "soundKey"
}
static var sound: Bool {
set {
UserDefaults.standard.set(newValue, forKey: Keys.soundKey)
}
get {
if UserDefaults.standard.object(forKey: Keys.soundKey) == nil {
// Value for sound not yet set ... Setting default ...
UserDefaults.standard.set(true, forKey: Keys.soundKey)
return true
}
return UserDefaults.standard.bool(forKey: Keys.soundKey)
}
}
Run Code Online (Sandbox Code Playgroud)
}
| 归档时间: |
|
| 查看次数: |
15440 次 |
| 最近记录: |