2011-07-06 124 views
0

我是新手編程,我遇到以下問題,希望有人能幫忙。我有一個使用登錄訪問主菜單的應用程序。我希望應用程序存儲用戶名(從登錄屏幕)並在程序中使用它。如果用戶已經登錄,則不必再次登錄。我希望應用程序檢查用戶是否在啓動時登錄並直接進入菜單菜單(如果有)。NSUserDefaults沒有正確保存

我的問題是,如果他們按下登錄按鈕,他們直接進入主菜單而不輸入登錄信息。如果他們輸入他們的名字,我可以在應用程序中使用他們的名字,直到應用程序重新啓動並且信息消失。

確定這裏是我的新代碼,但我仍然有同樣的問題。

-(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"]; 
} 

任何幫助將大大appriecated。謝謝。

+0

你的應用只支持一個用戶?你的應用程序可以讓用戶註銷?當用戶註銷時,您是否將''用戶名''鍵的值設置爲'nil'?爲什麼在* isLoggedIn *方法的return語句中存在雙'!'? – EmptyStack

+0

@EmptyStack雙'!'會將'nil'轉換爲'NO'。所以從技術上講,這不是一個錯誤。不知道爲什麼編輯出來。當前版本不正確。 –

+0

@Deepak,雙'!'應該將'nil'轉換爲'YES'。不是嗎? ;-)無論如何OP是正確的關於雙'!' – EmptyStack

回答

0

-(IBAction)LogInButton:(id)sender {你應該檢查他們是否輸入了文字,如果不是,再次提示。 在你的情況下,如果用戶按下'登錄'而不輸入名稱,'用戶名'值將有空字符串,登錄將通過。

+0

是的,我的應用程序只支持一個用戶,是的,應用程序可以讓用戶註銷。是的,我認爲Iam在註銷時將「用戶名」的值設置爲零。檢查文本是否輸入,但我仍然有同樣的問題。@ Shreesh @EmptyStack – Wayne