【问题标题】:NSString is being returned as 'null'NSString 被返回为 'null'
【发布时间】:2010-07-30 15:48:27
【问题描述】:

我有这个返回文件路径的简单方法。我将文件名作为参数传递。然后,当我调用此方法时,此方法在设备上运行时返回“null”,但在模拟器上运行良好。是不是我做错了什么?

-(NSString*) getFilePathForFile:(NSString*)fileName
{
    NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [array objectAtIndex:0];
    NSString *temp = [documentsDirectory stringByAppendingPathComponent:fileName];
    return temp;
}

NSString *path = [self getFilePathForFile:@"settingInfo.plist"]

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 你有没有在调试器中单步执行过这个方法?您肯定可以更清楚地了解哪里出了问题?
  • 我会添加一些NSLog 来看看事情的发展方向。 NSLog(@"fileName = %@", fileName);NSLog(@"array = %@", array);NSLog(@"documentsDirectory = %@", documentsDirectory);NSLog(@"temp = %@", temp); 应该准确地告诉您问题出在哪里。这将使找出修复程序变得更加容易。
  • 我已经尝试过 NSLog,当我们在方法内部时它确实打印了所有内容,但是当返回值时,它返回 null。我不明白为什么?
  • 向我们展示包含 NSLogs 的代码以及您获得的输出。如果返回值 path 为 nil,则显然所有内容都不是就在方法内部。 Objective-C 中没有已知的错误,即返回值在返回语句和分配它的调用者之间被转换。

标签: objective-c nsstring


【解决方案1】:

这听起来像是某种内存管理问题。您是否尝试过使用“构建和分析”来查看 Xcode 是否可以解决任何内存问题?

否则,试试这个,看看你是否得到非空值:

NSString *path = [[self getFilePathForFile:@"settingInfo.plist"] retain];

【讨论】:

    【解决方案2】:

    如果NSSearchPathForDirectoriesInDomains 返回的数组为nil,则该方法可以失败且不引发异常的唯一方法是。检查是否返回了一个有效的数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 1970-01-01
      相关资源
      最近更新 更多