Vérification de l'existence du nom et mot de passe pour NSUserDefaults Passer un login / écran
-
24-10-2019 - |
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];
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.