初始化NSURLComponents实例时,将false和true传递给'resolvingAgainstBaseURL'有什么区别?

Som*_*ite 36 swift

我无法理解这两种调用方式之间的区别是什么:

NSURLComponents(URL: url, resolvingAgainstBaseURL: true)
Run Code Online (Sandbox Code Playgroud)

NSURLComponents(URL: url, resolvingAgainstBaseURL: false)
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*n R 52

如果您从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"
Run Code Online (Sandbox Code Playgroud)

使用resolvingAgainstBaseURL == false,URL组件仅表示URL的相对部分:

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

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

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

  • 尽可能精确的答案 (7认同)