我有一个UISwitch,用于打开或关闭声音。使用NSUserDefaults保存状态。效果很好。但如果应用程序在安装后从第一个开始启动,则BOOL值为0且开关为OFF。因为之前没有保存任何值。 因此默认为OFF,您可以将其打开,下次它仍然打开。
我希望反过来,所以在安装应用程序时,默认情况下开关处于开启状态,您可以将其关闭。
我该如何解决?
答案 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元素。