在Objective C中将相对URL更改为绝对URL

时间:2010-01-23 15:59:25

标签: objective-c xcode url relative-path absolute-path

我如何获取应用程序目录中的文件(.app所在的文件夹),并获取它的绝对路径。假设相对路径是“Data / file.txt”,我如何使用Objective C将其作为绝对路径?如果有任何帮助,我让用户输入他们的主文件夹名称。

请帮忙,

HiGuy

3 个答案:

答案 0 :(得分:14)

我会使用为我解析网址的NSURL方法,例如:

NSURL * bundle = [[NSBundle mainBundle] bundleURL];
NSURL * file = [NSURL URLWithString:@"../Data/file.txt" relativeToURL:bundle];
NSURL * absoluteFile = [file absoluteURL];

“../”是必要的,因为否则它会尝试在您的应用包中找到 文件。预先设置“../”将告诉它查看包含的文件夹,而不是包本身。此外,-[NSBundle bundleURL]是一个10.6+ API,但使用NSURL便捷方法和-[NSBundle bundlePath]复制功能非常简单。

答案 1 :(得分:2)

通过执行以下操作查找正在运行的应用的位置:

NSString * applicationPath = [[NSBundle mainBundle] bundlePath];

将返回类似的内容:

/Users/myUser/Library/Application Support/iPhone Simulator/User/Applications/317CF5C7-57B3-42CE-8DF4-4DD10B070D95/Assignment1a.app

然后使用- (NSString *)stringByDeletingLastPathComponent来删除最后一位。

答案 2 :(得分:1)

您应该能够使用相对路径连接应用程序的根文件夹。您可以使用NSHomeDirectory()获取应用程序主目录,因此要获得绝对路径,您可以执行以下操作:

NSString *path = [NSHomeDirectory() stringByAppendingString: @"/Data/file.txt"];