NSUserDefaults,UISwitch和设置默认值

时间:2013-01-29 10:55:26

标签: xcode boolean nsuserdefaults uiswitch

我有一个UISwitch,用于打开或关闭声音。使用NSUserDefaults保存状态。效果很好。但如果应用程序在安装后从第一个开始启动,则BOOL值为0且开关为OFF。因为之前没有保存任何值。 因此默认为OFF,您可以将其打开,下次它仍然打开。

我希望反过来,所以在安装应用程序时,默认情况下开关处于开启状态,您可以将其关闭。

我该如何解决?

2 个答案:

答案 0 :(得分:4)

application:didFinishLaunchingWithOptions:中,检查是否已设置了一个paritcular键。如果返回nil,则将其设置为您选择的默认值。请查看下面的代码段以获得澄清。

我建议您在objectForKey:语句中使用if,因为这样可以使代码更容易,更不容易出错。当然,默认值可以是您喜欢的任何值。

<强>目标C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];

    if (![ud objectForKey:@"YOUR_KEY"]) {
        [ud setBool:YES forKey:@"YOUR_KEY"];
    }

    // Your Custom Code

    return YES
}

Swift 3

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let ud = UserDefaults.standard

    if ud.object(forKey: "YOUR_KEY") == nil {
        ud.set(true, forKey: "YOUR_KEY")
    }

    // Your Custom Code

    return true
}

答案 1 :(得分:1)

在applicationDidFinish中加载只检查您担心的值,如果为null,则将它们设置为默认值,在您的情况下为0 / OFF / NO。

同样适用于所有UI元素。