我是新手編程,我遇到以下問題,希望有人能幫忙。我有一個使用登錄訪問主菜單的應用程序。我希望應用程序存儲用戶名(從登錄屏幕)並在程序中使用它。如果用戶已經登錄,則不必再次登錄。我希望應用程序檢查用戶是否在啓動時登錄並直接進入菜單菜單(如果有)。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。謝謝。
你的應用只支持一個用戶?你的應用程序可以讓用戶註銷?當用戶註銷時,您是否將''用戶名''鍵的值設置爲'nil'?爲什麼在* isLoggedIn *方法的return語句中存在雙'!'? – EmptyStack
@EmptyStack雙'!'會將'nil'轉換爲'NO'。所以從技術上講,這不是一個錯誤。不知道爲什麼編輯出來。當前版本不正確。 –
@Deepak,雙'!'應該將'nil'轉換爲'YES'。不是嗎? ;-)無論如何OP是正確的關於雙'!' – EmptyStack