我有一个 UISwitch 用于打开或关闭声音。使用 NSUserDefaults 保存状态。效果很好。但是如果应用程序在安装后从头开始启动,则 BOOL 值为 0,开关为 OFF。因为之前没有保存任何值。所以默认是关闭的,你可以打开它,下次它仍然是打开的。
我希望反过来,所以在安装应用程序时,默认情况下开关是打开的,您可以将其关闭。
我该如何解决?
我有一个 UISwitch 用于打开或关闭声音。使用 NSUserDefaults 保存状态。效果很好。但是如果应用程序在安装后从头开始启动,则 BOOL 值为 0,开关为 OFF。因为之前没有保存任何值。所以默认是关闭的,你可以打开它,下次它仍然是打开的。
我希望反过来,所以在安装应用程序时,默认情况下开关是打开的,您可以将其关闭。
我该如何解决?
在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
}
在 applicationDidFinish 加载中,只需检查您担心的值,如果为 null,则将它们设置为默认值,在您的情况下为 0 / OFF / NO。
对于所有 UI 元素也是如此。