2012-04-02 7 views
9

NSUserDefaultsに次のようにBOOL値を設定しました。BOOLがNSUserDefaultsのユーザー設定に存在するかどうかをテストするにはどうすればよいですか?

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

キー「theKeyOfMyBOOLが」NSUserDefaultsに設定されていない場合は、他の私のコードのどこかには、私はいくつかのアクションを実行します。このキーが設定されているかどうかを確認する方法を教えてください。私は

[userDefaults boolForKey:@"theKeyOfMyBOOL"]; 

を行う場合は、返される値は、私は信じて偽、またはfalseに値NO、実際のBOOL値に評価され、ゼロである可能性があります。

しかし、私はこれら2つの値を区別する必要があります(もちろんYESも同様です)。どうすればそれを確実に行うことができますか?

+0

[iPhone - NSUserDefaults standardUserDefaultsにキーが存在するかどうかを検出する方法](http://stackoverflow.com/questions/5397364/iphone-how-to-detect-if-a-key-exists-in) -nsuserdefaults-standarduserdefaults) –

答えて

43

[userDefaults boolForKey:@"theKeyOfMyBOOL"];は、BOOLを返します。YESまたはNOnilではなく)です。

内部的には、NSNumberとして保存されます。あなたは

[userDefaults objectForKey:@"theKeyOfMyBOOL"]; 

を呼び出す場合、あなたがいない場合、あなたは今まで、何でも、またはnilを保存しているのであれば、あなたは、NSNumber与えられます。

関連する問題