Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 无法使用NSUserDefault成功注销_Objective C_Xib - Fatal编程技术网

Objective c 无法使用NSUserDefault成功注销

Objective c 无法使用NSUserDefault成功注销,objective-c,xib,Objective C,Xib,当我点击“注销”按钮时,会在登录页面上显示视图,然后再次打开我的主页。。这是我的问题 这是我的密码- 此代码用于检查NSUserDefault -(void)viewWillAppear:(BOOL)animated{ self.navigationController.navigationBar.hidden = YES; // cheq the value in NSUserdeafault if ([[[NSUserDefaults standardUserDe

当我点击“注销”按钮时,会在登录页面上显示视图,然后再次打开我的主页。。这是我的问题

这是我的密码- 此代码用于检查
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];


}
请给我解决方案

使用Bool数据类型作为“登录”键

登录时,请使用以下命令:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"login"];
[[NSUserDefaults standardUserDefaults] synchronize];
单击“注销”按钮时,请设置:

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

您正在将字符串设置为UserDefault,这将使您的检查为true

NSUserDefaults*默认值=[NSUserDefaults standardUserDefaults];
[默认设置值:@“0”forKey:@“注销”]

应该是这样的:

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

那么在你的支票上你可以用

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

似乎您没有粘贴注销按钮代码,但视图将显示代码两次。请发布您的注销按钮代码。@rckoenes先生,这是我的注销按钮代码为什么您在
NSUserDefaults
中保持“登录”状态?这太荒谬了。一方面你正在设置注销键的值,另一方面你正在检查登录键的值…-(iAction)logout_btn:(id)发送方{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动画:NO];}先生,这是我的注销按钮代码那么在
NSUserDefaults
中按住
YES
/
NO
实际上意味着什么?当然,登录意味着你有一个活动的网络连接并已通过身份验证?那么你如何获得这些东西呢?
[[[NSUserDefaults standardUserDefaults] boolForKey:@"logout"]; // you won't need to specify boolValue anymore unless you use the first option (setValue:@NO)