将NSURL基本URL更改为另一个基本URL

时间:2009-11-25 19:34:06

标签: cocoa nsurl

我有一个NSURL到没有基本URL的本地文件。我想将基本URL更改为另一个本地目录,相对路径与该URL相关。 例如

 NSURL *path = [NSURL fileURLWithPath: @"/Users/username/Desktop/Photos/Photo1.jpg"];

现在,我想要将基础部分更改为/Users/username/Desktop/SomeFolder,然后我希望[path relativePath];返回的NSString为"../Photos/Photo1.jpg"

有一种简单的方法吗?我似乎找不到任何NSURL方法来做到这一点。我可以通过新基础的路径组件和旧的绝对路径来构建我自己的相对部分,但是有更简单的方法吗?

2 个答案:

答案 0 :(得分:3)

NSURL个对象是不可变的,因此在创建它之后无法更改基本URL。您最好的选择是使用NSURL创建新的URLWithString:relativeToURL:实例。但是,我仍然认为你想要的东西不起作用。 -[NSURL relativePath]的文档声明如果接收者是绝对URL(您的示例是),则此方法返回与path相同的值。

答案 1 :(得分:2)

无耻的自我推销,KSFileUtilities具有在两个位置之间获取相对字符串/ URL的例程