2009-04-14 9 views
1

응용 프로그램이 실행되는 동안 특정 정보를 저장하고 응용 프로그램이 시작될 때 다시 가져와야합니다. GData를 사용하여 XML로 저장하려고 시도했지만 성공하지 못했습니다. NSFileHandle을 사용하여 오류가 발생하지 않지만 읽기/쓰기 목적으로 .txt 파일을 만들지 못합니다. iPhone에 데이터를 저장하고 검색하는 다른 방법이 있습니까? 아래 NSFileHandle 내 코드입니다.iPhone 영구 저장

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"]; 
//NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"]; 
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"myFile.txt"]; 
[fh seekToEndOfFile]; 
NSData *data = [camName dataUsingEncoding:NSASCIIStringEncoding]; 
[fh writeData:data]; 
[fh closeFile]; 

읽기

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"]; 
//NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"]; 
NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"myFile.txt"]; 
if(fh == nil) 
    return nil; 
else 
{ 
    NSData *data = [fh readDataOfLength:8]; 
    NSString *retStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
    return retStr; 
} 

답변

10

아마도 권한이없는 리소스 디렉토리에 쓰려고합니다. 문서 디렉토리를 가리 키도록 코드의 첫 번째 줄을 변경해보십시오 :

NSArray *savePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSMutableString *savePath = [NSMutableString stringWithString:[savePaths objectAtIndex:0]]; 
[savePath appendString:@"/myFile.txt"]; 

또한, 당신은 파일 핸들에 대해 걱정할 필요가 없습니다. NSData은 디스크에 자신을 기록 할 수 있습니다.

BOOL result = [data writeToFile:savePath atomically:YES]; 
3

모든 아이폰 응용 프로그램이 폐기 저장하기위한 매우 유용 할 수 있습니다/쓰기 이름/값 쌍을 읽을 수있는 능력에 사용자 환경 설정과 같은 작은 정보. 이 기본 설정은 응용 프로그램 사용자가 편집 할 수도 있습니다 (선택한 경우).

텍스트 파일 저장 및 검색을 시도하는 것보다 튼튼한 또 다른 옵션 (특히이 옵션이 마음에 들지 않았습니다. 특히 iPhone의 구문 분석 XML 구문 분석이 마음에 들지 않습니다)은 sqlite입니다. sqlite는 모든 iPhone 및 iPod touch에 포함되어있는 매우 가벼운 관계형 데이터베이스 엔진입니다.