在初始化 NSURLComponent 实例时,将 false 和 true 传递给“ ResolvingAgainstBaseURL”有什么区别?

我不明白这两种称呼方式有什么区别:

NSURLComponents(URL: url, resolvingAgainstBaseURL: true)

还有

NSURLComponents(URL: url, resolvingAgainstBaseURL: false)

我发现文件的解释很难理解。 有人能给我一个简单的例子来说明这个 api 是如何工作的吗? (我尝试了许多不同的参数组合,但结果都是一样的... ...)

9784 次浏览

如果您使用 NSURL创建 URL 组件,那么只会产生不同的结果 创建相对于另一个 NSURL:

let baseURL = NSURL(string: "http://server/foo/")!
let url = NSURL(string: "bar/file.html", relativeToURL: baseURL)!
print(url.absoluteString)
// "http://server/foo/bar/file.html"

使用 resolvingAgainstBaseURL == false,URL 组件 只代表网址的相对部分:

let comp1 = NSURLComponents(URL: url, resolvingAgainstBaseURL: false)!
print(comp1.string!)
// "bar/file.html"

使用 resolvingAgainstBaseURL == true,URL 组件 表示完全解析的网址:

let comp2 = NSURLComponents(URL: url, resolvingAgainstBaseURL: true)!
print(comp2.string!)
// "http://server/foo/bar/file.html"