Objective c 如何将文本文件正确传递给NSFileManager

Objective c 如何将文本文件正确传递给NSFileManager,objective-c,nsfilemanager,Objective C,Nsfilemanager,我正在学习Objective-C,向NSFileManager类传递文本文件时遇到问题。我在程序所在的同一目录中创建了新的空文件“testfile”,但NSFileManager不知何故找不到该文件。我不知道问题是什么: NSString *fileName = @"testfile"; NSFileManager *fileMgr; NSDictionary *attrib; fileMgr = [NSFileManager defaultManager];

我正在学习Objective-C,向NSFileManager类传递文本文件时遇到问题。我在程序所在的同一目录中创建了新的空文件“testfile”,但NSFileManager不知何故找不到该文件。我不知道问题是什么:

NSString *fileName = @"testfile";
    NSFileManager *fileMgr;
    NSDictionary *attrib;

    fileMgr = [NSFileManager defaultManager];

    NSLog(@"%@",[fileMgr currentDirectoryPath]);

    // verifying the test file exists
    if([fileMgr fileExistsAtPath: fileName] == NO) {
        NSLog(@"File doesn't exist");
        return 1;
    }
这是我的程序的附加屏幕截图

很可能该文件不在程序运行的目录中。从Xcode运行程序时,它通常直接在Xcode项目的顶层运行。NSLog应该准确地告诉您哪个目录

请注意,默认情况下,Xcode为整个项目提供了一个顶级目录,为每个目标提供了代码的子目录。因此,如果您的项目直接位于主目录中,Xcode将在中运行该程序

/Users/<your home>/prog36
/Users//prog36
但是您的文本文件(位于目标目录中)处于

/Users//prog36/prog36

请注意两个嵌套目录,都称为
prog36

,当前目录是什么?那个文件在那个目录里吗?是的。如果你看屏幕截图,你会发现我把它放在了文件所在的同一个目录中……当然,如果我正确理解了同一个目录的意思,我想你不会这么做。查看打印的
NSLog()
调用的目录,并将其与测试文件所在的目录进行比较。通常情况下,您会将文件包含在应用程序包中,然后使用
NSBundle
调用确定应用程序包当前所在的位置。例如,请参阅有关如何在生成命令行工具时将文件复制到生成目录的说明。好的,谢谢,我将尝试:)
/Users/<your home>/prog36/prog36