2012-04-02 8 views
9

Establecí un valor BOOL en NSUserDefaults de la siguiente manera.¿Cómo compruebo si BOOL existe en la configuración de usuario NSUserDefaults?

[userDefaults setBool:NO forKey:@"theKeyOfMyBOOL"]; 

En algún otro lugar en mi código, que desea llevar a cabo alguna acción si la clave "theKeyOfMyBOOL" no se encuentra en NSUserDefaults. ¿Cómo verifico si esta clave fue configurada? Si hago

[userDefaults boolForKey:@"theKeyOfMyBOOL"]; 

entonces el valor devuelto podría ser nulo, lo que da como resultado false creo, o el valor BOOL real de NO, que valora a falso.

Sin embargo, necesito diferenciar estos dos valores (además de SÍ, por supuesto). ¿Cómo puedo hacer eso de manera confiable?

+0

posible duplicado de [iPhone - Cómo detectar si existe una clave en NSUserDefaults standardUserDefaults] (http://stackoverflow.com/questions/5397364/iphone-how-to-detect-if-a-key-exists-in -nsuserdefaults-standarduserdefaults) –

Respuesta

43

[userDefaults boolForKey:@"theKeyOfMyBOOL"]; devuelve un BOOL, entonces YES o NO (no nil).

Internamente, se almacena como NSNumber. Por lo tanto, si se llama a

[userDefaults objectForKey:@"theKeyOfMyBOOL"]; 

se le dará un NSNumber, si alguna vez ha almacenado nada o nil, si no es así.

Cuestiones relacionadas