반응형
각각의 view에 데이터를 컨트롤 하기 힘들 때 다음과 같이 plist를 이용하여 데이터를 관리합니다.
아래의 예제를 통해서 plist를 관리하는 법을 간단하게 보겠습니다.
다음과 같이 두개의 탭이 존재하는 프로그램입니다.
second 에서 데이터를 입력 후 저장하게 되면 first 탭에서 동일한 내용의 데이터가 보여집니다.
경로 검색
plist 생성
데이터 읽기
데이터 쓰기
아래의 예제를 통해서 plist를 관리하는 법을 간단하게 보겠습니다.
다음과 같이 두개의 탭이 존재하는 프로그램입니다.
second 에서 데이터를 입력 후 저장하게 되면 first 탭에서 동일한 내용의 데이터가 보여집니다.
경로 검색
- (NSString *)getPath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"setting.plist"];
return path;
}
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"setting.plist"];
return path;
}
plist 생성
NSError *error;
NSString *path = [self getPath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path])
{
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"setting" ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath: path error:&error];
}
NSString *path = [self getPath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path])
{
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"setting" ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath: path error:&error];
}
데이터 읽기
NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile:[self getPath]];
//load from savedStock example int value
self.pName.text = [savedStock objectForKey:@"strName"];
self.pAddress.text = [savedStock objectForKey:@"strAddress"];
[self.pMarried setOn:[[savedStock objectForKey:@"nMarried"] intValue]];
self.pMemo.text = [savedStock objectForKey:@"strMemo"];
[savedStock release];
//load from savedStock example int value
self.pName.text = [savedStock objectForKey:@"strName"];
self.pAddress.text = [savedStock objectForKey:@"strAddress"];
[self.pMarried setOn:[[savedStock objectForKey:@"nMarried"] intValue]];
self.pMemo.text = [savedStock objectForKey:@"strMemo"];
[savedStock release];
데이터 쓰기
NSString *path = [self getPath];
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
//here add elements to data file and write data to file
[data setObject:[self.pName.text copy] forKey:@"strName"];
[data setObject:[self.pAddress.text copy] forKey:@"strAddress"];
[data setObject:[NSNumber numberWithInt:self.pMarried.on] forKey:@"nMarried"];
[data setObject:[self.pMemo.text copy] forKey:@"strMemo"];
[data writeToFile:path atomically:YES];
[data release];
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
//here add elements to data file and write data to file
[data setObject:[self.pName.text copy] forKey:@"strName"];
[data setObject:[self.pAddress.text copy] forKey:@"strAddress"];
[data setObject:[NSNumber numberWithInt:self.pMarried.on] forKey:@"nMarried"];
[data setObject:[self.pMemo.text copy] forKey:@"strMemo"];
[data writeToFile:path atomically:YES];
[data release];
반응형
'Programming > iOS' 카테고리의 다른 글
어플이 슬립모드(화면이꺼지는)로 전환되지 않기 위한 코드 (0) | 2011.08.29 |
---|---|
디바이스와 시뮬레이터에서 모두 사용가능한 라이브러리 배포 (0) | 2011.07.21 |
UITableView를 이용한 콤보박스 (0) | 2011.07.19 |
timezone 설정하기 (0) | 2011.04.22 |
CATransition 이용(화면전환 에니메이션) (0) | 2011.04.12 |