【问题标题】:NSString fails, app crashes trying to NSLog the NSErrorNSString 失败,应用程序崩溃尝试 NSLog NSError
【发布时间】:2010-07-11 08:05:54
【问题描述】:

罐头上写着什么。我要做的就是将 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)。有什么想法吗?

【问题讨论】:

    标签: objective-c uikit nsstring nslog nserror


    【解决方案1】:

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

    尝试设置NSError* err = nil;

    【讨论】:

    • 谢谢!它是一个空文本视图和一个未初始化的 NSError 的组合。
    【解决方案2】:

    我相信您应该检查 error 对象,而不是 success 布尔值。毕竟 - 这就是为什么你要传递它的地址来进行写操作。

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

    您可能还想检查[textView text] 是否返回nil,以及textView 本身是否不是nil

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多