'NSUserDefaults'에 해당되는 글 2건

  1. 2012.05.31 NSUserDefaults 유용하고 빠른 파일저장
  2. 2011.10.30 NSUserDefaults 사용하기
영삼이의 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 다오나무
카테고리 없음2011. 10. 30. 20:44

NSUserDefaults 클래스는 하나의 APP에서 동통적으로 사용하는 Default property를 관리하는 클래스 입니다.

property를 관리 하기때문에 KVC를 쉽게 사용할수 있으며,

코어데이터나 SQLite를 사용하는것 보다 가볍게 사용이 가능 합니다.

그러므로 로그인 정보, 설정 정보등의 정보는 NSUserDefaults에 넣으면 간단하게 사용할수 있습니다.

NSUserDefaults에서 사용하는 property의 경로는 다음과 같다.

시뮬레이터 : (Username)/Library/Application Support/iPhone Simulator/(컴파일버전)/Applications/(앱 아이디)/Library/Preferences/(앱id.앱이름).plist

예로 plist파일을 보게 되면 아래와 같이 Dictionary, Array 등의 타입이 저장 가능합니다.

UserDefaults 를 사용하는 코드입니다.

synchronize 는 현제 메모리에 있는 NSUserDefaults 오브젝트와 파일에 저장된 NSUserDefaults를 동기화시킨다는 의미이다.

즉 모메리상의 객체를 파일로 저장한다는 뜻~

다음은 NSUserDefaults에서 불러오는 방법..

파일로 저장된 plist파일 에서 데이터를 가져오는 부분으로 NSUserDefaults를 마치 NSDictionary 처럼 사용이 가능하게 해준다.

NSUserDefaults 는 어플의 업데이트와 상관없이 설치되면 삭제할때까지 유지가된다.

  출처 : http://fivestones.tistory.com/12

Posted by 다오나무