"나 특정 값을 영구적으로 저장하고 싶어~^^ " "쉬파 어떤 방법이 있는거야? 파일 입출력 해야되? XML로 저장해야 하나." "아잉 난 정말 간단한 값인데. 쉬운 방법 없을까?" 이런 고민을 하시는 아이폰 개발을 시작하시는 여러분에게 NSUserDefaults 를 소개합니다 간단한 API ! 유용한 기능 ! 단 돈 0원에 지금 만나보실 수 있습니다~! NSUserDefaults 는 사용자 설정을 지원하기 위해 설계되었답니다. REMOVE_AD 라는 값이 YES면 광고를 제거해주고 NO면 광고를 보여준다. 라는 기능이 필요하다고 합시다. 근데 우리가 이 값을 파일로 가지고 있어야지 앱 실행시마다 초기화 된다면 컨트롤할 방법이 없습니다 (초기에 REMOVE_AD가 NO인데 나중에 인앱결재등을 통해 REMOVE_AD를 YES로 바꿨다 칩시다. 근데 이 값을 파일로 저장해야 REMOVE_AD는 항상 YES일 수 있는 거지요) 위의 예로 한번 구현해 봅시다. 앱이 처음 시작되는 지점이나 - (void) applicationDidFinishLaunching:(UIApplication*)application <- 뭐 여기 함수 내에? ㅋ 혹은 필요하다고 하는 지점에 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 요렇게 인스턴스를 생성합니다. ^^ 쉽습니다~! if (![defaults objectForKey:@"REMOVE_AD"]) { [defaults setObject:@"NO" forKey:@"REMOVE_AD"]; } 자 요렇게 초기 값을 설정합니다. 위 로직을 이해하셨나요? [defaults objectForKey:@"키값"] <- 요건 말그대로 키값에 해당하는 오브젝트를 가져오는 부분이구요 [defaults setObject:@"오브젝트여기선 그냥 스트링" forKey:@"키값"]; <- 요건 말그대로 키값에 오브젝트 즉 값을 설정하는 부분입니다. 즉 REMOVE_AD 값을 NSUserDefaults에서 찾아서 없다면 NO로 설정하는 부분이고 if문안의 로직은 한번 수행하고 나면 다시는 실행되지 않겠죠 ㅋㅋ 이렇게 값을 설정하고 마지막에 [defaults synchronize]; 를 해줘야 합니다. 그래야 완벽히 저장이 되는 거지요 ㅋ 합쳐 놓으면 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if (![defaults objectForKey:@"REMOVE_AD"]) { [defaults setObject:@"NO" forKey:@"REMOVE_AD"]; } [defaults synchronize]; 너무나 심플합니다. ㅋ 그리고 앱내에서 인앱을 해서 광고를 제거했다. 그러면 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:@"YES" forKey:@"REMOVE_AD"]; [defaults synchronize]; 요렇게 값을 YES로 바꿔버리면 되구요. ^^ 실제 광고를 보여주는 로직에서 아래와 같이 제어할 수 있는 겁니다. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([[defaults objectForKey:@"REMOVE_AD"] isEqualToString:@"NO"]) { //광고 보여줘잉 } else { //광고 보여주면 안되!!! } 정말 간편한 NSUserDefaults 자주 애용해 봅시다 ㅋㅋ
'영삼이의 IT정보' 카테고리의 다른 글
메인 runloop 쓰레드에 타이머 동작 시키기 (0) | 2012.06.01 |
---|---|
기본적인 문자열, 날짜, 배열 등 테스트 (0) | 2012.06.01 |
iOS5의 UDID 정책 변경에 대한 퀵 리뷰 (iOS5 beta 6 기준) (0) | 2012.05.31 |
ASIHttpRequest를 ARC와 함께 쓰기 (XCode 4.2) (0) | 2012.05.30 |
iPhone NSURLRequest 사용법 (0) | 2012.05.29 |