使用NSUserDefaults通过首次应用程序启动将开关位置设置为ON

时间:2012-06-02 17:32:59

标签: ios xcode switch-statement default nsuserdefaults

我的应用程序中的开关通过standardUserDefaults存储位置,但是当app首次启动时,我的所有开关都处于OFF位置。如何默认将它们设置为ON?

保存

NSUserDefaults *defs1 = [NSUserDefaults standardUserDefaults];
    [defs1 setBool: blackSwitch.on forKey: @"blackKey"];
    [[NSUserDefaults standardUserDefaults] synchronize];

加载

NSUserDefaults *defs1 = [NSUserDefaults standardUserDefaults];
    blackSwitch.on = [defs1 boolForKey: @"blackKey"];

2 个答案:

答案 0 :(得分:2)

首先

执行以下操作

NSUserDefaults *defs1 = [NSUserDefaults standardUserDefaults];
BOOL isOn = [defs1 boolForKey: @"blackKey"];
if(isOn) NSLog(@"isOn");

第二个问题是blackSwitch不是零

if(blackSwitch) NSLog(@"blackSwitch is not nil");

如果blackswitch为nil,这意味着您仍处于视图控制器初始化的早期阶段,则应将设置它的代码移动到viewDidLoad或viewWillAppear

要设置默认值,请使用此代码

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSNumber *testValue = [NSNumber numberWithBool:YES];
NSDictionary *appDefaults = [[NSDictionary alloc] initWithObjectsAndKeys:
testValue, @"blackKey", nil];

[defaults registerDefaults:appDefaults]; 
[appDefaults release];

答案 1 :(得分:2)

使用NSUserDefaults方法registerDefaults将默认值'true'与@“blackKey”键一起传递。这将确保将@“blackKey”设置为ON,直到用户自己对其进行更改。