2

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

我希望反过来,所以在安装应用程序时,默认情况下开关是打开的,您可以将其关闭。

我该如何解决?

4

2 回答 2

4

application:didFinishLaunchingWithOptions:中,您检查是否已经设置了特定键。如果nil返回,则将其设置为您选择的默认值。请查看下面的代码段以进行说明。

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

Objective-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
}

斯威夫特 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
}
于 2013-01-29T12:58:57.693 回答
1

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

对于所有 UI 元素也是如此。

于 2013-01-29T11:12:25.980 回答