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"];
}
这是我到目前为止迅速...
if  NSUserDefaults.standardUserDefaults().objectForKey("onoroff") != nil{
    NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
}
我想我可能已经弄清楚了.任何人都可以确认这是将bool保存到NSUserDefaults并使用if语句的正确方法.这里是...
if  !NSUserDefaults.standardUserDefaults().boolForKey("onoroff"){
     NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff")
}else{ NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
     }
if NSUserDefaults.standardUserDefaults().boolForKey("onoroff") == true
以上代码仅检查密钥的值是否为真.
要么
if NSUserDefaults.standardUserDefaults().objectForKey("onoroff")
如果密钥没有值,上面的代码检查密钥的值是否为真.(表示在"onoroff"的UserDefault中插入Nothing).
编辑
if !NSUserDefaults.standardUserDefaults().objectForKey("onoroff")
{
     NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff")
}
else
{
    NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
}
在Swift 3.0中
 let defaults = UserDefaults.standard
它创建标准默认文件并在其不存在时进行配置,如果存在则将其打开.
if !UserDefaults.standard.bool(forKey: "onoroff") {
            UserDefaults.standard.set(true, forKey: "onoroff")
     } else {
            UserDefaults.standard.set(false, forKey: "onoroff")
     }
if !defaults.standard.bool(forKey: "onoroff") {
            defaults.standard.set(true, forKey: "onoroff")
     } else {
            defaults.standard.set(false, forKey: "onoroff")
     }
谢谢@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)
    }
}
}
| 归档时间: | 
 | 
| 查看次数: | 15440 次 | 
| 最近记录: |