Überprüfen Sie die Existenz von Namen und Passwort in nsuserDefaults, um einen Anmeldung/einen Bildschirm zu überspringen

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

Frage

Ich habe eine TabBar/TableView -App, in der eine Anmelde-/Anmeldeansicht modell geladen wird, wenn die App geladen wird. Ich habe einen Root.plist in einem Einstellungsbündel für den Namen und das Passwort eingerichtet und die Elemente erfolgreich abgerufen. Ich möchte in der Lage sein, zwei Dinge zu tun:

1) Führen Sie einen Test durch, um festzustellen, ob die NsuserDefault -Zeichenfolgen leer sind, und laden Sie die Anmelde-/Anmeldeansicht.

2) Wenn die Zeichenfolgen verfügbar sind, verwenden Sie den String -Inhalt, um sich bei meinem Webservice anzumelden.

Danke im Voraus.

Hier ist mein 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];
War es hilfreich?

Lösung

Ich würde den Benutzernamen und das Passwort nicht direkt in label.text speichern, aber dies ist Ihr Programm. Für leere Überprüfung versuchen Sie dies:

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

Sie können auch StringForkey: KuernameKey anstelle von ObjectForkey ausprobieren. Stellen Sie schließlich sicher, dass Ihr Benutzername und Ihr Passwort nicht nur weiß, dass Sie diese Überprüfung durchgeführt haben, bevor Sie in NsuserDefaults gespeichert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top