2017-01-30 3 views
0

次のコードは期待通りに動作しません。私はBOOLNSNumberを正しく処理しないとか、あるいはおそらく私はユーザーのデフォルトとして正しく番号を格納していないと思われるかもしれません。いずれにしても、UISwitchから値を取得してそれをユーザーのデフォルト値に保存しようとすると、私は価値がないと思っていました。Objective-C:UISwitchから選択した値を取得

NSNumber * on = [NSNumber numberWithBool:self.onSwitch.on]; 
BOOL onBool = [on boolValue]; 
NSLog(@"onBool before save%d",onBool);//Logs as 0 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setBool:onBool forKey:@"on"];// 
[prefs synchronize]; 
BOOL onDefault = [[NSUserDefaults standardUserDefaults] objectForKey:@"on"]; 
NSLog(@"value of on after save%d",onDefault);//logs as 1 

誰にでもエラーが発生した場所を確認できますか?

答えて

2

主なアイデアは、適切なboolForKey APIを使用することで、その代わりに

BOOL onDefault = [[NSUserDefaults standardUserDefaults] objectForKey:@"on"]; 

のは、このようにそれを試してみてください。

BOOL onDefault = [[NSUserDefaults standardUserDefaults] boolForKey:@"on"]; 

アップルdocs

boolForKey:
から指定されたキーに関連付けられたブール値を返します。

+0

はい、またはNSNumberを返すobjectForKeyを返し、それにboolValueを送ります。 – danh

0

受け入れられた回答に加えて、私はここで起こっていることについて少し洞察したいと思っていました。ブール値を設定していますが、オブジェクトを要求しています。 1true)は、メソッドがオブジェクトを返すため、ブール値にキャストすることで単純にその存在をチェックするためです。

関連する問題