¿Necesita ayuda para save bool en NSUserDefaults y usarlo en una instrucción if utilizando Swift?

Estoy luchando para averiguar cómo hacer una instrucción if con un bool guardado en NSUserDefaults usando swift. Creo que sé cómo save el bool a NSUserDefaults pero una confirmación en eso sería muy apreciada. Este es el código objective-c que estoy tratando de averiguar cómo usar con Swift.

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"onoroff"]) { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"onoroff"]; } 

Esto es lo que tengo hasta ahora en forma rápida …

 if NSUserDefaults.standardUserDefaults().objectForKey("onoroff") != nil{ NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff") } 

Creo que podría haberlo averiguado. ¿Alguien puede confirmar que esta es la forma correcta de save un bool en NSUserDefaults y usar una instrucción if con él. Aquí está…

 if !NSUserDefaults.standardUserDefaults().boolForKey("onoroff"){ NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff") }else{ NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff") } 

 if NSUserDefaults.standardUserDefaults().objectForKey("onoroff") == true 

El código anterior solo es verificar si el valor de la key es verdadero o no.

o

 if NSUserDefaults.standardUserDefaults().objectForKey("onoroff") 

El código anterior comtesting si el valor de la key es verdadero o no, si no hay ningún valor para la key. (Significa Nada insertado en el UserDefault de "onoroff").

EDITAR

 if !NSUserDefaults.standardUserDefaults().objectForKey("onoroff") { NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff") } else { NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff") } 

En Swift 3.0

  let defaults = UserDefaults.standard 

Crea el file pnetworkingeterminado estándar y lo configura si no existe, o ábralo si lo hace.

 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") } 

Gracias, @Fnetworking por corregir la respuesta 🙂

 NSUserDefaults.standardUserDefaults().setObject(Bool(false), forKey:"onoroff") var onoroff = NSUserDefaults.standardUserDefaults().objectForKey("onoroff") as Bool! if (onoroff != nil && onoroff == false) { } 

EDITAR :

 NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff") if NSUserDefaults.standardUserDefaults().boolForKey("onoroff"){ }else{ } 

La respuesta aceptada es correcta. Esta es la forma en que me gusta hacerlo (Swift 3.0):

 struct Settings { fileprivate struct Keys { static let soundKey = "soundKey" } static var sound: Bool { set { UserDefaults.standard.set(newValue, forKey: Keys.soundKey) UserDefaults.standard.synchronize() } get { if UserDefaults.standard.object(forKey: Keys.soundKey) == nil { // Value for sound not yet set ... Setting default ... UserDefaults.standard.set(true, forKey: Keys.soundKey) UserDefaults.standard.synchronize() return true } return UserDefaults.standard.bool(forKey: Keys.soundKey) } } 

}

Para verificar el valor de bool en lugar de objectForKey , debemos usar boolForKey . Encuentro que como errores en la respuesta aceptaste

  if (NSUserDefaults.standardUserDefaults().boolForKey("onoroff")){ NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff") }else { NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff") }