NSString失败,app崩溃尝试NSLog NSError

时间:2010-07-11 08:05:55

标签: objective-c uikit nsstring nslog nserror

它在锡上说的是什么。我想要做的就是将NSString保存到Documents目录中的.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]);
}

在我的情况下,成功返回NO,我的应用程序在NSLog行上崩溃(EXC_BAD_ACCESS)。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果textView(或[textView text])为零,则success将为NO,但err将为未初始化。这是在这里崩溃的唯一可能方式。

尝试设置NSError* err = nil;

答案 1 :(得分:0)

我相信你应该检查error对象,而不是success布尔值。毕竟 - 这就是你为写操作传递它的地址的原因。

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

另外,您可能需要检查[textView text]是否未返回nil以及textView本身是否nil