gpt4 book ai didi

ios - 使用 NSUserDefaults 的应用程序设置不起作用

转载 作者:行者123 更新时间:2023-11-29 03:01:48 25 4
gpt4 key购买 nike

我有一个设置包,里面有一个项目。该项目是一个设置为 NO 的开关。

我正在使用它来允许用户退出我想创建的应用程序。但是,当用户打开应用程序然后转到设置并选择开关以在他们返回应用程序时注销时没有任何反应。如果他们返回到设置,再次切换然后返回,则 if 语句输入正确。

这几乎就像第一次没有读取设置,但我不确定如何解决这个问题。

我的代码是这样的:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
NSNumber *branchString = [settings objectForKey:@"signout"];

NSLog(@"%@", branchString);

if ((branchString != nil) || (branchString != 0)) {
// turn signout back on.
[settings setObject:NO forKey:@"signout"];
[settings synchronize];
}
}

最佳答案

用户默认值与其他容器类一样:它们将对象作为元素而不是标量类型。因此,您需要使用 NSNumber 包装该标量类型 (BOOL):

[settings setObject:[NSNumber numberWithBool:NO] forKey:@"signout"];
// with modern syntax
[settings setObject:@(NO) forKey:@"signout"];

但听起来您是从开关中获取值,因此您将无法使用新的文字语法,即:

[settings setObject:[NSNumber numberWithBool:self.mySwitch.on] forKey:@"signout"];

请记住,当从默认值中读回时,您需要解开包装的缩放器,如下所示:

self.mySwitch.on = [[settings objectForKey:@"signout"] boolValue];

关于ios - 使用 NSUserDefaults 的应用程序设置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23209023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com