0

我有一个 Tabbar/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];
4

1 回答 1

0

我不会将用户名和密码直接存储到 label.text 中,但这是你的程序。对于空检查试试这个:

if ([usernameLabel.text length] == 0 || [passwordLabel.text length] == 0)
    [self loadLoginView];
else
    [self login:nil];

您也可以尝试使用 stringForKey:kUsernameKey 而不是 objectForKey。最后确保您的用户名和密码不仅仅是空格,现在我假设您在保存到 NSUserDefaults 之前进行了检查。

于 2010-06-04T18:16:50.443 回答