69

我不明白这两种调用方式有什么区别:

NSURLComponents(URL: url, resolvingAgainstBaseURL: true)

NSURLComponents(URL: url, resolvingAgainstBaseURL: false)

而且我发现文档的解释很难理解......有人可以给我一个简单的例子来展示这个api是如何工作的吗?(我尝试了许多不同的参数组合,但它们产生的结果是相同的......)

4

1 回答 1

112

如果您从一个NSURL相对于另一个创建的 URL 组件创建 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 组件仅表示 URL 的相对部分:

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

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

let comp2 = NSURLComponents(URL: url, resolvingAgainstBaseURL: true)!
print(comp2.string!)
// "http://server/foo/bar/file.html"
于 2016-08-02T13:10:38.513 回答