我有一个xcode/objective-c项目,旨在与命令行(特别是iOS或mac)一起使用.该项目位于一个名为Prototype的文件夹中,在这个文件夹中我有一个文本文件:data.txt.我正在尝试创建一个方法来将data.txt的内容作为NSString返回.我使用以下代码成功完成了此操作:
+ (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中创建相对文件路径吗?
您可以简单地使用相对路径,但问题是当前工作目录可能不是您所期望的.
当前的工作目录实际上只与在命令行shell中工作有关.用户为了方便起见将其设置为他们想要的方式.然后,它们调用命令并将路径作为参数传递,并且命令和路径参数的路径可以是相对的或绝对的.程序不能依赖工作目录作为自己的位置,也不能依赖任何其他特定位置.
当然,当您从Xcode运行程序时,您不能依赖于任何特定位置的工作目录.
如果需要,可以使用设置当前工作目录-[NSFileManager changeCurrentDirectoryPath:]
,但随后会破坏通过用户提供的相对路径查找文件的功能.您可以使用获取包含命令行工具的目录的路径[[NSBundle mainBundle] bundlePath]
.