Как сохранить данные для входа пользователя, используя раскадровки в iOS5? - PullRequest
0 голосов
/ 15 ноября 2011

Я установил начальный вид моего приложения с раскадровкой на основной. У меня есть этот код в делегате приложения, который должен загрузить VC входа в систему, если пользователь еще не вошел в систему:

if (currentUser) {
    // do stuff with the user
    //use storybaord nibs
} else {
    // show the signup or login screen
    UIStoryboard *storyboard = self.window.rootViewController.storyboard;
    self.window.rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"];
}

Проблема в том, что у меня нет логики для currentUser. Это просто код suedo. Как я могу настроить это правильно?

Это код, который я использую в реальном VC входа в систему для входа пользователя. Я сохраняю имя пользователя / пароль в NSUserDefaults.

-(IBAction)loginButtonPressed:(id)sender{
    ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://myapp.com/20111115/60b88126/login_user/"]]];
    [request setPostValue:self.usernameTextField.text forKey:@"username"];
    [request setPostValue:self.passwordTextField.text forKey:@"password"];
    [request startSynchronous];

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];   
    [userDefaults setObject:self.usernameTextField.text forKey:@"login"];
    [userDefaults setObject:self.passwordTextField.text forKey:@"password"];

    NSError *error = [request error];
    NSString *responseString = nil;
    if (!error) {
        responseString = [request responseString];
    } else {
        responseString = @"Failed to connect to server, please check your WiFi or 3G connection.";
    }
    NSDictionary *responseDictionary = [responseString JSONValue];
    NSString *loginProblems = [responseDictionary valueForKey:@"login_errors"];
    if (![loginProblems isEqualToString:@""]) {
        //Invalid login
    } else {
        [self performSegueWithIdentifier:@"login" sender:self];
    }
}

1 Ответ

1 голос
/ 29 ноября 2011

Вы можете просто проверить, есть ли в NSUserDefaults значения для имени пользователя / пароля и продолжить с этого? вам просто нужно обязательно очистить эти значения, когда он выйдет из системы.

Таким образом, если поле имени пользователя / пароля для NSUserDefaults пустое, отправьте его в логин. если у него есть значения, «делай вещи». когда он выйдет из системы, очистите значения?

или сделать мгновенную переменную в AppDelegate, указав, что он вошел в систему или нет?

создайте переменную в делегате приложения как обычную переменную экземпляра, затем используйте:

    InspectAppDelegate *dataCenter = (InspectAppDelegate *) [[UIApplication sharedApplication] delegate];

для доступа к нему в другом контроллере представления (необходимо объявить его любым способом, в котором вы его используете).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...