프로그래밍에 익숙하지 않고 다음과 같은 문제가 있습니다. 누군가 도와 줄 수 있기를 바랍니다. 메인 메뉴에 액세스하기 위해 로그인을 사용하는 앱이 있습니다. 나는 (로그인 화면에서) 사용자 이름을 저장하고 프로그램 내에서 사용하도록 앱을 원합니다. 사용자가 이미 로그인 한 경우 다시 로그인 할 필요가 없습니다. 사용자가 시작시 로그인했는지 확인하고 앱이있는 경우 메뉴 메뉴로 직접 이동하기를 원합니다.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"];
}
도움이 될 것입니다. 감사.
앱이 한 명의 사용자 만 지원합니까? 앱에 로그 아웃 할 수있는 옵션이 있습니까? 사용자가 로그 아웃 할 때''username ''키의 값을'nil'으로 설정하고 있습니까? 왜 isLoggedIn * 메소드의 return 문에 '!'가 두 개 붙어 있습니까? – EmptyStack
@EmptyStack Double'!'는'nil'을'NO'로 변환합니다. 그래서 기술적으로 그건 실수가 아니 었습니다. 그것이 왜 편집되었는지 확실하지 않습니다. 현재 버전이 잘못되었습니다. –
@Deepak, Double'!'는'nil'을'YES'로 변환해야합니다. 그렇지 않니? ;-) 어쨌든 OP는 두 개의'! '에 대해 정확합니다. – EmptyStack