如何在iOS5中使用故事板保存用户登录数据



我已经将我的应用程序的初始视图与storyboard设置为主视图。我在app委托中有这段代码,如果用户还没有登录,它应该加载登录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];
    }
}

你能检查一下NSUserDefaults是否有用户名/密码的值,然后从那里开始吗?您只需要确保在他注销时清除这些值。

如果NSUserDefaults的username/password字段是空的,发送他到登录。如果它有值,"做一些事情"。当他退出时,清除这些值吗?

或者在AppDelegate中创建一个即时变量来声明他是否登录了?

在应用委托中创建变量,就像一个普通的实例变量一样,然后使用:

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

在不同的视图控制器中访问它(需要在你使用它的任何方法中声明它)

最新更新