"나 특정 값을 영구적으로 저장하고 싶어~^^ "
"쉬파 어떤 방법이 있는거야? 파일 입출력 해야되? 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 자주 애용해 봅시다 ㅋㅋ