영삼이의 IT정보2012. 5. 31. 15:19

"나 특정 값을 영구적으로 저장하고 싶어~^^ "

"쉬파 어떤 방법이 있는거야? 파일 입출력 해야되? 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 자주 애용해 봅시다 ㅋㅋ

Posted by 다오나무