본문 바로가기

C/Objective C/ios

아이폰 NSUserDefaults 예제 따라하기

- 아이폰이 종료되어도 Application에 데이터를 저장 해놓고 활용하고 싶을때 NSUserDefaults 클래스를 활용하면 된다.

- NSUserDefault : 일시적으로 데이터 저장

유저디폴트는 일시적으로 데이터를 저장하거나 읽고 싶을 때 사용한다. 큰 데이터나 다수의 데이터를 저장 할 수는 없지만, 웹사이트의 쿠키나 플래시의 SharedObject 등과 같이 ‘현재 상태를 저장해두고, 다음에 실행할 때 저장된 상태를 불러와서 해당 상태로부터 계속’과 같은 적은 정보를 저장하는 데 사용한다. 


- 화면 디자인


- NSUserDefaults 예제 순서

1. Xcode 실행
2. Single View Application
3. Project Name : “UserDefaultTest”
4. storyboard에 Text Field 위치
5. Assistant Editor로 Text Field 드래그
6. “myTextField” 입력
7. @property 밑에 라인에 “-(IBAction)inputEnd;” - Command+S
8. Control 키를 누른 채 TextField를 클릭
9. Did End On Exit 오른쪽에 있는 동그라미에서 뷰의 빈 자리로 드래그 

10. ViewController.m 파일 편집

- (void)viewDidLoad
{ [super viewDidLoad];

// 유저 디폴트인 MEMO에서 문자열을 읽어낸다.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *dStr = [defaults stringForKey:@"MEMO"];
// 텍스트 필드에 문자열을 표시한다.
myTextField.text = dStr;

}
- (IBAction)inputText:(id)sender {

// 유저 디폴트인 MEMO에 문자열을 써 넣는다.
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject: myTextField.text forKey:@"MEMO"];
[defaults synchronize];

}

11. 실행 – 홈 버튼 – 다시 실행 


- ViewController.m 소스코드

#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController

@synthesize myTextField;


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

// 유저 디폴트인 MEMO에서 문자열을 읽어낸다.

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

NSString *dStr = [defaults stringForKey:@"MEMO"];

// 텍스트 필드에 문자열을 표시한다.

myTextField.text = dStr;

}


- (void)viewDidUnload

{

    [self setMyTextField:nil];

    [super viewDidUnload];

    // Release any retained subviews of the main view.

}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {

    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

} else {

    return YES;

}

}


- (IBAction)inputText:(id)sender {

// 유저 디폴트인 MEMO 문자열을 넣는다.

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 

    [defaults setObject: myTextField.text forKey:@"MEMO"];

[defaults synchronize];

}

@end



- 실행화면