在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/