2011-07-06 11 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"]; 
} 

도움이 될 것입니다. 감사.

+0

앱이 한 명의 사용자 만 지원합니까? 앱에 로그 아웃 할 수있는 옵션이 있습니까? 사용자가 로그 아웃 할 때''username ''키의 값을'nil'으로 설정하고 있습니까? 왜 isLoggedIn * 메소드의 return 문에 '!'가 두 개 붙어 있습니까? – EmptyStack

+0

@EmptyStack Double'!'는'nil'을'NO'로 변환합니다. 그래서 기술적으로 그건 실수가 아니 었습니다. 그것이 왜 편집되었는지 확실하지 않습니다. 현재 버전이 잘못되었습니다. –

+0

@Deepak, Double'!'는'nil'을'YES'로 변환해야합니다. 그렇지 않니? ;-) 어쨌든 OP는 두 개의'! '에 대해 정확합니다. – EmptyStack

답변

0

-(IBAction)LogInButton:(id)sender { 텍스트가 입력되었는지 확인하고 그렇지 않은 경우 다시 확인해야합니다. 사용자가 이름을 입력하지 않고 '로그인'을 누르면 '사용자 이름'값에 빈 문자열이 생겨 로그인이 진행됩니다.

+0

예 내 앱은 한 명의 사용자 만 지원합니다. 예, 앱에 로그 아웃 할 수있는 옵션이 있습니다. 예. 로그 아웃 할 때 'username'값을 nil로 설정한다고 생각합니다. if 문을에 추가했습니다. 텍스트가 입력되었지만 여전히 같은 문제가 있는지 확인하십시오. @ Shreesh @EmptyStack – Wayne

관련 문제