无法使用 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)
当我点击注销按钮查看登录页面并再次打开我的主页时..这是我的问题..
这是我的代码-
此代码用于检查 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)