在Swift的URL类中,有 .standardized .absoluteURL 属性(Objective-C的NSURL中的 .standardizedURL .absoluteURL 以及 .URLByStandardizingPath )。还有 .standardizedFileURL

我不知道所有这些之间有什么区别,但是必须有一个,因为它们提供了所有这些,对吗?我的意思是明确地表示.standardizedFileURL仅用于处理文件URL,但除此之外(例如,如果所有内容都在文件URL上调用),有什么区别?

从上面链接的文档中:

swift







物镜





最佳答案

如果url是绝对URL,则为url.absoluteURL == url

如果url是相对URL且具有非nil baseURL,则url.absoluteURL通过在url(因此是baseURL)的上下文中解决url.absoluteURL != url的相对性来返回绝对URL。

如果url是相对URL,则url.standardized不会使而不是返回绝对URL,并且实际上可能返回的URL与url(!)的解析方式不同,因为url.standardized会删除路径中所有前导的..组件。

例子:

let base = URL(string: "https://stackoverflow.com/q/43258046/77567")!
// output: "https://stackoverflow.com/q/43258046/77567"

let rel = URL(string: "../16176911", relativeTo: base)!
// output: "../../16176911 -- ttps://stackoverflow.com/q/43258046/77567"

rel.absoluteURL
// output: "https://stackoverflow.com/q/16176911"

rel.standardized
// output: "16176911 -- ttps://stackoverflow.com/q/43258046/77567"

rel.standardized.absoluteURL
// output: "https://stackoverflow.com/q/43258046/16176911"

关于swift - URL.standardized和URL.absoluteURL有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43258046/

10-09 09:09