Vérification de l'existence du nom et mot de passe pour NSUserDefaults Passer un login / écran

StackOverflow https://stackoverflow.com/questions/2976500

Question

J'ai un Tabbar / Tableview App qui se charge de une vue à effet modal Connexion / Inscription au chargement d'applications, j'ai mis en place un Root.plist dans un settings bundle pour le nom et le mot de passe et ont réussi à récupérer les éléments. Je veux être en mesure de faire deux choses:

1) Faites un test pour voir si les chaînes NSUserDefault sont vides et si oui charger la vue Connexion / Inscription.

2) Si les chaînes sont disponibles, utilisez alors le contenu de la chaîne pour vous connecter à mon Webservice.

Merci à l'avance.

Voici mon 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];
Était-ce utile?

La solution

Je ne serais pas stocker le nom d'utilisateur et mot de passe directement dans Label.text, mais c'est votre programme. Pour vérifier vide, essayez ceci:

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

Vous pouvez également essayer stringForKey: kUsernameKey au lieu de objectForKey. Enfin assurez-vous à un moment donné que votre nom d'utilisateur et mot de passe ne sont pas seulement des espaces, maintenant, je suppose que vous l'avez fait vérifier avant de l'enregistrer dans NSUserDefaults.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top