需要帮助将bool保存到NSUserDefaults,并在使用Swift的if语句中使用它
我正在努力弄清楚如何做一个布尔保存到NSUserDefaults使用swift的if语句。 我相信我知道如何将布尔保存到NSUserDefaults,但在这方面的确认将不胜感激。 这是我想弄清楚如何使用迅速客观c代码。
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"onoroff"]) { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"onoroff"]; }
这是我迄今在迅速…
if NSUserDefaults.standardUserDefaults().objectForKey("onoroff") != nil{ NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff") }
我想我可能已经弄清楚了。 任何人都可以确认这是保存布尔到NSUserDefaults和使用if语句的正确方法。 这里是…
if !NSUserDefaults.standardUserDefaults().boolForKey("onoroff"){ NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff") }else{ NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff") }
if NSUserDefaults.standardUserDefaults().objectForKey("onoroff") == true
上面的代码只是检查键的值是否为真。
要么
if NSUserDefaults.standardUserDefaults().objectForKey("onoroff")
上面的代码检查键值是否为真,如果键没有值(在“onoroff”的UserDefault中没有插入)。
编辑
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
它会创build标准的默认文件,并在不存在的情况下对其进行configuration,如果不存在则将其打开。
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纠正答案:-)
NSUserDefaults.standardUserDefaults().setObject(Bool(false), forKey:"onoroff") var onoroff = NSUserDefaults.standardUserDefaults().objectForKey("onoroff") as Bool! if (onoroff != nil && onoroff == false) { }
编辑 :
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff") if NSUserDefaults.standardUserDefaults().boolForKey("onoroff"){ }else{ }
接受的答案是正确的。 这是我喜欢做的方式(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) } }
}
要检查bool值而不是objectForKey,我们必须使用boolForKey 。 我发现,你接受的答案是错误的
if (NSUserDefaults.standardUserDefaults().boolForKey("onoroff")){ NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff") }else { NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff") }
Swift 3
这是开关的代码,这将保存为UserDefaults true或false。
let defaults = UserDefaults.standard @IBOutlet weak var mySwitch: UISwitch! @IBAction func switchValueChanged(_ sender: Any) { self.defaults.set(mySwitch.isOn, forKey: "mySwitch") }
然后显示交换机的保存状态…开启/closures:
override func viewDidLoad() { super.viewDidLoad() mySwitch.isOn = self.defaults.bool(forKey: "mySwitch") }
所以真的是1行来设置开关的状态,1行来获取用户保存状态并正确设置开关!