无法使用 NSUserDefault 成功注销

Unable to logout successfully using NSUserDefault

当我点击注销按钮查看登录页面并再次打开我的主页时..这是我的问题..

这是我的代码- 此代码用于检查 NSUserDefault

中的值
-(void)viewWillAppear:(BOOL)animated{

    self.navigationController.navigationBar.hidden = YES;
    // cheq the value in NSUserdeafault

    if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"login"] boolValue]) {

        HomePage *mainView = [[HomePage alloc]initWithNibName:@"HomePage" bundle:nil];

        [self.navigationController pushViewController:mainView animated:YES];
    }
}

这个是登出按钮

- (IBAction)logout_btn:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:@"0" forKey:@"logout"];

[defaults synchronize];
         LoginPage *log = [[LoginPage alloc] init];
        MyNavigationController *navController = [[MyNavigationController alloc] initWithRootViewController:log];
        navController.navigationBar.translucent=NO;

        [menuController setRootController:navController animated:NO];


}

请给我解决方案

为 "login" 键使用 Bool 数据类型。

登录时使用:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"login"];
[[NSUserDefaults standardUserDefaults] synchronize];

点击注销按钮时设置:

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"login"];
[[NSUserDefaults standardUserDefaults] synchronize];

您正在为您的 UserDefault 设置一个字符串,这将使您的检查为真。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setValue:@"0" forKey:@"logout"];

应该是这样的:

[[NSUserDefaults standardUserDefaults] setValue:@NO forKey:@"logout"];

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"logout:]; // explicitly indicating that you are setting a BOOL

然后在您的支票中您可以使用

[[[NSUserDefaults standardUserDefaults] boolForKey:@"logout"]; // you won't need to specify boolValue anymore unless you use the first option (setValue:@NO)