验证NSUSERDEFAULTS中名称和密码的存在以跳过登录/屏幕
-
24-10-2019 - |
题
我有一个tabar/tableview应用程序,该应用程序将应用程序加载时将登录/注册视图仿真地加载,我已经在设置捆绑包中设置了一个root.plist以获取名称和密码,并成功检索了项目。我想能够做两件事:
1)进行测试以查看NSUSERDEFAULT字符串是否为空,并在上加载登录/注册视图。
2)如果可以使用字符串,请使用字符串内容登录到我的Web服务。
提前致谢。
这是我的loginviewController .m:
@synthesize usernameField;
@synthesize passwordField;
@synthesize loginButton;
@synthesize loginIndicator;
@synthesize usernameLabel;
@synthesize passwordLabel;
-(void)refreshFields {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
usernameLabel.text = [defaults objectForKey:kUsernameKey];
passwordLabel.text = [defaults objectForKey:kPasswordKey];
}
- (void)viewDidAppear:(BOOL)animated {
[self refreshFields];
[super viewDidAppear:animated];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self refreshFields];
[self.navigationController setNavigationBarHidden:YES animated:NO];
}
- (IBAction) login: (id) sender
{
{
NSString *post =[NSString stringWithFormat:@"username=%@&password=%@",usernameField.text, passwordField.text];
NSString *hostStr = @"http:~iphone_login.php?";
hostStr = [hostStr stringByAppendingString:post];
NSData *dataURL = [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];
NSLog(@"Site: %@",hostStr);
NSLog(@"Site: %@",serverOutput);
if([serverOutput isEqualToString:@"Yes"]){
UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Congrats" message:@"You are authorized "
delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alertsuccess show];
[alertsuccess release];
解决方案
我不会将用户名和密码直接存储到label.text中,但这是您的程序。对于空检查,请尝试以下操作:
if ([usernameLabel.text length] == 0 || [passwordLabel.text length] == 0)
[self loadLoginView];
else
[self login:nil];
另外,您可以尝试使用StringForKey:Kusernamekey而不是ObjectForKey。最终确保在某个时候确保您的用户名和密码不仅是空格,现在我想您在保存到NSUSERDEFAULTS之前进行了检查。
不隶属于 StackOverflow