Проверка существования имени и пароля в nsuserdefaults, чтобы пропустить вход/экран

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

Вопрос

У меня есть приложение Tabbar/TableView, которое модально загружает представление в систему/регистрации при загрузке приложения, я настраивал root.plist в пакете настроек для имени и пароля и успешно получил элементы. Я хочу иметь возможность делать две вещи:

1) Сделайте тест, чтобы увидеть, пустые ли строки nsuserdefault и если это так, если это так, загрузите представление входа в систему/регистрации.

2) Если строки доступны, используйте содержимое строки для входа в мой веб -сервис.

Заранее спасибо.

Вот мой 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top