2016-01-09 85 views
1

我有一个xcode/objective-c项目用于命令行(不是iOS或mac专门)。该项目位于名为Prototype的文件夹中,并且在此文件夹中有一个文本文件:data.txt。我想做一个方法来返回data.txt的内容作为NSString。我已经成功地用下面的代码这样做:Objective-C相对文件路径

+ (NSString *)loadTextFileToString:(NSString*)fileDest { 
    NSString *filePath = @"/Users/John/Documents/Objective-C/Prototype/Prototype/data.txt" 
    NSError *error = nil; 
    NSString *fileContent = [NSString stringWithContentsOfFile:filePath 
                encoding:NSASCIIStringEncoding 
                error:&error]; 
    return fileContent; 
} 

这种方法的工作原理,但我想用一个相对路径,而不是绝对路径来访问文件。例如,在Eclipse中,我将使用路径“src/data.txt”。有没有类似的方法可以在xcode/objective-c中创建相对文件路径?

回答

5

你可以简单地使用相对路径,但问题是,当前的工作目录可能不是你所期望的。

当前的工作目录实际上只与在命令行shell中工作有关。用户为了他们的方便而设置他们想要的。然后他们调用命令并传递路径作为参数,并且命令和路径参数的路径可能是相对的或绝对的。程序不能依赖工作目录作为自己的位置或任何其他特定位置。

当然,当你在Xcode中运行一个程序,你可以不依赖于工作目录是任何特定位置。

如果你愿意,你可以设置使用-[NSFileManager changeCurrentDirectoryPath:]当前的工作目录,但你摧毁的用户提供相对路径来查找文件的能力。您可以使用[[NSBundle mainBundle] bundlePath]获取包含命令行工具的目录的路径。