2010-07-11 1 views
0

Что он говорит о жестяном. Все, что я хочу сделать, это сохранить NSString в файл .txt в папке «Мои документы», чтобы пользователь мог получить доступ. Это называется в applicationWillTerminate:NSString не работает, приложение отключается, пытаясь NSLog NSError

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

Если textView (или [textView text]) равна нулю, success будет NO но err будет неинициализированным. Это единственный возможный способ столкнуться здесь.

Попробуйте установить NSError* err = nil;

+0

Спасибо! Это была комбинация нулевого текстового представления и неинициализированный NSError. – Khakionion

0

Я считаю, что вы должны проверить объект error, а не success булево значение. В конце концов - вот почему вы передаете адрес для операции записи.

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

Также вы можете проверить, что [textView text] не возвращается nil и если textView не nil сам.

Смежные вопросы