NSUserDefaults
starts empty, so asking for a key returns nil
, and calling -boolValue
on nil returns NO
/0
You should use -[NSUserDefaults registerDefaults:]
to set defaults for your keys/values in -appDidFinishLaunching
in your app delegate:
-(void)applicationDidFinishLaunching:(UIApplication*)app
{
NSDictionary * defaults = @{
"lights" : @YES
// you can list the default values for other defaults/switches here
} ;
[ [ NSUserDefaults standardUserDefaults ] registerDefaults:defaults ] ;
}
In your -viewDidLoad
, do this:
lightsSwitch.on = [ [ NSUserDefaults standardUserDefaults ] boolForKey:@"lights" ] ;
In your toggleLightSwitch, I would to this:
BOOL isOn = [ [ NSUserDefaults standardUserDefaults ] boolForKey:@"lights" ] ;
isOn = !isOn ; // toggle ;
[ NSUserDefaults standardUserDefaults ] setBool:isOn ForKey:@"lights" ] ;
self.lightsSwitch.on = isOn ;