2

我正在尝试将NSString我的文件的内容加载到names.txt项目目录中的 . 为此,我有以下代码:

    NSError *error = nil;
    NSString *names = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"names" ofType:@"txt"] encoding:NSASCIIStringEncoding error:&error];
    if (error != nil) {
        [NSException raise:@"Error reading file :" format:@"%@",error];
    }

我得到了*** Terminating app due to uncaught exception 'Error reading file :', reason: 'Error Domain=NSCocoaErrorDomain Code=258 "The file name is invalid."'。我找不到任何其他类似的案例。这段代码有什么问题?

4

2 回答 2

4

确保您的 names.txt 文件包含在目标的 Xcode Build Phases 窗口的 Copy Bundle Resources 区域下。

在调试器中,您可以使用以下命令测试有效的捆绑文件:

  ...
  NSString *file  = [[NSBundle mainBundle] pathForResource:@"names" ofType:@"txt"];
  /* FILE ought not be nil. NSAssert (file) */
  NSString *names = [[NSString alloc] initWithContentsOfFile: file
                                                    encoding: NSASCIIStringEncoding
                                                       error: &error];
于 2013-05-04T20:00:12.033 回答
2
if (error != nil) {

不不不不不。那不是正确的测试。测试是

if (nil == names) {

的值error无法告诉您我们是否成功。返回的 nil 值告诉您是否存在问题。然后,只有这样,您才能阅读错误。

于 2013-05-04T20:04:21.600 回答