Objective-C: 从 UISwitch 获取选定值
Objective-C: Get Selected Value from UISwitch
以下代码的行为与我预期的不同。我认为这可能与未正确处理 BOOL
和 NSNumber
有关,或者可能我没有正确存储数字作为用户默认值。无论如何,在从 UISwitch
获取值并尝试将其保存为用户默认值后,我没有获得我认为我正在保存的值。
NSNumber * on = [NSNumber numberWithBool:self.onSwitch.on];
BOOL onBool = [on boolValue];
NSLog(@"onBool before save%d",onBool);//Logs as 0
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setBool:onBool forKey:@"on"];//
[prefs synchronize];
BOOL onDefault = [[NSUserDefaults standardUserDefaults] objectForKey:@"on"];
NSLog(@"value of on after save%d",onDefault);//logs as 1
谁能看出我哪里出错了?
主要思想是使用适当的 boolForKey API,所以不用
BOOL onDefault = [[NSUserDefaults standardUserDefaults] objectForKey:@"on"];
像这样尝试:
BOOL onDefault = [[NSUserDefaults standardUserDefaults] boolForKey:@"on"];
来自苹果 docs
boolForKey:
Returns the Boolean value associated with the specified key.
除了已接受的答案之外,我还想提供一些关于这里发生的事情的见解。您正在设置一个布尔值但要求一个对象。您看到 1
(true
) 是因为方法 returns 是一个对象,通过将其转换为布尔值,它只会检查它是否存在。
以下代码的行为与我预期的不同。我认为这可能与未正确处理 BOOL
和 NSNumber
有关,或者可能我没有正确存储数字作为用户默认值。无论如何,在从 UISwitch
获取值并尝试将其保存为用户默认值后,我没有获得我认为我正在保存的值。
NSNumber * on = [NSNumber numberWithBool:self.onSwitch.on];
BOOL onBool = [on boolValue];
NSLog(@"onBool before save%d",onBool);//Logs as 0
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setBool:onBool forKey:@"on"];//
[prefs synchronize];
BOOL onDefault = [[NSUserDefaults standardUserDefaults] objectForKey:@"on"];
NSLog(@"value of on after save%d",onDefault);//logs as 1
谁能看出我哪里出错了?
主要思想是使用适当的 boolForKey API,所以不用
BOOL onDefault = [[NSUserDefaults standardUserDefaults] objectForKey:@"on"];
像这样尝试:
BOOL onDefault = [[NSUserDefaults standardUserDefaults] boolForKey:@"on"];
来自苹果 docs
boolForKey:
Returns the Boolean value associated with the specified key.
除了已接受的答案之外,我还想提供一些关于这里发生的事情的见解。您正在设置一个布尔值但要求一个对象。您看到 1
(true
) 是因为方法 returns 是一个对象,通过将其转换为布尔值,它只会检查它是否存在。