2011-10-05 3 views
1

현재 Xcode 프로젝트 디렉토리 (응용 프로그램 번들)에있는 xml 파일에 데이터 (데이터가 HTTP 응답에서 생성됨)를 쓰는 코드를 작성하고 있습니다. Xcode 프로젝트에있는 xml 파일에 쓸 수 있습니다. 그래서 동일한 코드를 시도하고 바탕 화면에있는 xml 파일을 가리 키도록 파일 경로를 수정했습니다 (다른 위치를 선택하여 더 이상 문제가 있음) 놀랍게도 간단한 문자열이 xml 파일에 기록되는 곳에서 작동했습니다. 아이폰의 경우이 제한 사항이 있기 때문에 App 번들의 파일에 쓸 수 없다는 내용의 게시물을 읽었습니다. 그게 사실이야? 그렇다면 대체 방법이 있습니까? 누군가가이 문제에 대한 통찰력을 가지고 도움이된다면 정말 감사 할 것입니다. 오류 변수를 선언하고 오류 메시지를 기록 할 수 있는지 알아보기 위해 디버거가 if 문을 입력하지 않았으므로 쓰기 오류가 발생하지 않습니다.Xcode 프로젝트 디렉토리에있는 파일에 쓰기

//writing to a file 
    NSString *file_path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"xml"]; 
    NSString *dummy = @"Hello World!!\n"; 
    NSFileManager *filemanger; 
    NSError *writingError = nil; 
    filemanger = [NSFileManager defaultManager]; 

    if ([filemanger fileExistsAtPath:file_path] == YES) 
    NSLog (@"File do exist!!!"); 
    else 
    NSLog (@"File is not found!!!"); 


BOOL sucess = [dummy writeToFile:file_path atomically:YES encoding:NSUnicodeStringEncoding error:&writingError]; 
if(!sucess) 
{ 
    NSLog(@"Unable to write to the file"); 
} 

if (writingError) { 
    NSLog(@"Fail: %@", [writingError localizedDescription]); 
} 

답변

3

를 아이폰 OS에서 응용 프로그램 번들 서명 및 그 제한을 해제 읽기 전용 있도록한다 : 아래는 내가 쓴 샘플 코드입니다. 대신 파일 영역이 있고 디렉토리 중 하나는 Documents입니다. 이는 데이터를 저장하기에 정말 좋은 장소입니다. 너무 많은 도움이

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName]; 
+0

감사 :

여기 문서 디렉토리에 액세스하는 방법을 보여줍니다 코드 조각입니다! – User897