2010-07-11 7 views
0

주석에 표시되는 내용. 내가하고 싶은 일은 NSString을 내 문서 디렉토리의 .txt 파일에 저장하여 사용자가 액세스 할 수 있도록하는 것입니다. 이것은 applicationWillTerminate에 호출됩니다 내 경우NSString이 실패합니다. 응용 프로그램이 NSError를 NSLog에 충돌합니다.

NSError* err; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
// the path to write file 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"TheFile.txt"]; 
BOOL success = [[textView text] writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&err]; 
if (!success) { 
    NSLog(@"Error: %@ %@", err, [err userInfo]); 
} 

는, 성공은 다시 NO, 내 응용 프로그램 충돌 (EXC_BAD_ACCESS)로 NSLog 라인에 온다. 어떤 아이디어?

답변

2

경우, successNO되지만 err는 초기화되지 않은 것입니다. 이것이 여기서 일어날 수있는 유일한 방법입니다.

시험해보기 NSError* err = nil;

+0

고마워요! null 텍스트보기와 초기화되지 않은 NSError의 조합이었습니다. – Khakionion

0

나는 error 객체를 확인해야하며, success 부울 값을 검사해서는 안된다고 생각합니다. 결국 - 쓰기 작업을 위해 주소를 전달하는 이유입니다.

if (error) { 
    NSLog(@"Error: %@", err); 
} 

은 또한 당신은 [textView text]nil를 반환하지 않는 것을 확인 할 수 있으며, 경우 textViewnil 자체가 없습니다. textView (또는 [textView text])는 무기 호입니다

관련 문제