이것의 특징은 어플을 삭제 하고 다시 재설치 하지 않은 이상 그 현상을 유지한다는것이다.
쉽게 말하자면,
업데이트 전 A=0
NSUserDefaults 실행 후
소스변경 A=1 하고 업데이트 후 실행하면 A=0 이 된다.
A=1 을 만들고 싶으면 어플을 삭제하고 다시 설치해야 A=1이 된다.
이유는 NSUserDefaults라는 것으로 디폴트 저장되어 있으면 현상 유지된다는 말이다.
아래의 소스는 어플의 처음실행될때 사용되는 예제. 참고겸 올려 놧습니다.
아래의 내용은 http://kindlybugs.com/220 블로그에서 퍼와서 정리해봅니다.
개발을 하다보면 다양한 값을 저장해야하는일이 생긴다.
서버 디비에 저장하고 끌어다쓰는 일도 있지만 통신없이 저장을 해야하는경우도 생긴다.
예를 들자면 로그인저장상태나 게임세이브파일 같은것?
보편적인 2가지
1) writeToFile:automatically
(Array나 Dictionary 타입을 저장할때 사용하면 편리)
//Dictionary 를 keyCode라는 이름으로 디바이스 로컬에 저장하는 방법
-(void)save:(NSMutableDictionary*)Dictionary ForKey:(NSString*)keyCode
{
if( Dictionary == nil || keyCode == nil )
{
return;
}
NSString * dataPath = [[NSString stringWithFormat:@"~/Documents/%@", keyCode] stringByExpandingTildeInPath];
[Dictionary writeToFile:dataPath atomically:YES];
}
//keyCode라는 이름으로 디바이스 로컬에 저장되어있는 Dictionary를 불러오기
-(NSMutableDictionary*)load:(NSString*)keyCode
{
if( keyCode == nil )
{
return nil;
}
NSString * dataPath = [[NSString stringWithFormat:@"~/Documents/%@", keyCode] stringByExpandingTildeInPath];
return [NSMutableDictionary dictionaryWithContentsOfFile:dataPath];
}
복잡한 NSData형 자료를 얼마든지 저장,로드 할수 있게 되었다.
하지만 만일 NSData형이 아닌 NSObject형을 저장해야 한다면?
훨씬 다양한 데이터 타입이나 복잡한 구조를 저장해야 한다면?
이 문제를 해결해줄 2번 후보 등장이다.
2) NSUserDefaults
일단 간단한 소스부터..
//SaveData 라는 Object를 userSaveData라는 이름으로 저장
- (void)saveAccountData:(SaveData *)object
{
NSUserDefaults * pref = [NSUserDefaults standardUserDefaults];
NSData * encodedObject = [NSKeyedArchiver archivedDataWithRootObject:object];
[pref setObject:encodedObject forKey:@"userSaveData"];
//적용
[[NSUserDefaults standardUserDefaults] synchronize];
}
//userSaveData라는 이름으로 저장된 SaveData를 불러오기
SaveData * saveData = [self loadAccountInfoObjectWithKey:@"userSaveData"];
SaveData안에는 NSDate형 NSString형 int형 등등 많은 정보가 들어있다
기본적으로 SaveData같은 NSObject를 상속받는 클래스를 만든후 get,set를 이용 만든후 사용해주면 된다.
'개발도구 > iOS - 아이폰 개발' 카테고리의 다른 글
[아이폰] Xcode4 에서 Framework 추가 하기 (0) | 2011.09.30 |
---|---|
[아이폰] 아이폰 alert 메세지표기 (1) | 2011.09.30 |
[아이폰] add version 아이폰 어플 버전업때 배포과정 (0) | 2011.08.23 |
[아이폰] tableview row 파란색 없애기 (0) | 2011.08.22 |
[아이폰-펌] 문자열 합치기 (0) | 2011.08.22 |