NSUserDefaults无法正常保存

时间:2011-07-06 05:14:06

标签: iphone xcode cocoa-touch

我是编程的新手,我有以下问题我希望有人可以提供帮助。我有一个使用loggin访问主菜单的应用程序。我希望应用程序存储用户名(从登录屏幕)并在程序中使用它。如果用户已经登录,则无需再次登录。我希望应用程序检查用户是否已登录启动并直接进入菜单菜单。

我的问题是,如果他们按下登录按钮,他们直接进入主菜单而不输入登录详细信息。如果他们输入了他们的名字,我可以在应用程序中使用他们的名字,直到重新启动应用程序并且信息消失。

好的,这是我的新代码,但我仍然遇到同样的问题。

-(IBAction)LogInButton:(id)sender {

    NSString *tempstr = [[NSUserDefaults standardUserDefaults]      objectForKey:@"username"];

    if (tempstr.length == 0) {
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
        [prefs setObject:name.text forKey:@"username"];
        [prefs synchronize];
        [self showCorrectController];

        ClubFindViewController *logView = [[ClubFindViewController alloc]     initWithNibName:@"ClubFindViewController" bundle:nil];
        [self presentModalViewController:logView animated:YES];
    }
    else {
        MainMenuView *mainView = [[MainMenuView alloc]     initWithNibName:@"MainMenuView" bundle:nil];
        [self presentModalViewController:mainView animated:YES];
    }
}

-(void)viewDidLoad {
    [super viewDidLoad];
    [self showCorrectController];
}

-(void)showCorrectController {
    UIViewController *viewController = nil;

    if ([self isLoggedIn]) {
        viewController = [[MainMenuView alloc] init];
    }
    else {
        viewController = [[ClubFindViewController alloc] init];
    }

    [self presentModalViewController:viewController animated:YES];
    [viewController release];
     viewController = nil;
}

-(BOOL)isLoggedIn {
    return ![[NSUserDefaults standardUserDefaults] objectForKey:@"username"];
}

任何帮助都会得到很大的帮助。感谢。

1 个答案:

答案 0 :(得分:0)

-(IBAction)LogInButton:(id)sender {中您应该检查他们是否输入了文本,如果没有,请再次提示。 在您的情况下,如果用户在没有输入名称的情况下按下“登录”,则“用户名”值将为空字符串,登录将会通过。