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

Posted

技术标签:

【中文标题】将 NSURL 基本 URL 更改为另一个基本 URL【英文标题】:Change NSURL base url to another base URL 【发布时间】:2009-11-25 19:34:05 【问题描述】:

我有一个指向没有基本 url 的本地文件的 NSURL。我想将基本 URL 更改为另一个本地目录,相对路径是相对于该 URL。 例如

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

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

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

【问题讨论】:

似乎不容易。 Here are some codes on web can be used as a NSString extension. 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于将 NSURL 基本 URL 更改为另一个基本 URL的主要内容,如果未能解决你的问题,请参考以下文章

使用 .htaccess 将 web Url 更改为另一个 Url? [复制]

ALAsset NSURL *assetURL 返回 NULL

Java - 如果我知道域,如何将相对 URL 字符串更改为绝对 URL?

将 iframe URL 更改为另一个协议会重新加载页面,但不会在从计时器触发时重新加载

将链接类型从.php?id =更改为html

IOS NSURL基本操作-备