Какая разница между передачей false и true в "resolvingAgainstBaseURL" при инициализации экземпляра NSURLComponents?

Я не могу понять, в чем разница между этими двумя способами вызова:

NSURLComponents(URL: url, resolvingAgainstBaseURL: true)

и

NSURLComponents(URL: url, resolvingAgainstBaseURL: false)

И я понял, что объяснение документации было трудно понять... Может кто-нибудь, пожалуйста, дайте мне простой пример, чтобы показать, как работает этот api? (Я пробовал много разных комбинаций параметров, но то, что они дали, было таким же...)

Ответы

Ответ 1

Неважно, создаете ли вы компоненты URL из NSURL, которые был создан относительно другого 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"