Сбой NSString, сбой приложения при попытке NSLog NSError - PullRequest
0 голосов
/ 11 июля 2010

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

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]);
}

В моем случае успех возвращается как НЕТ, и мое приложение падает (EXC_BAD_ACCESS) в строке NSLog.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 11 июля 2010

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

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

0 голосов
/ 11 июля 2010

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

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

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

...