URL init(string:relativeTo:)工作错误



我正在尝试通过 3 个步骤构建一个复合 url,但结果是错误的!

// 1)
let baseURL = URL(string: "http://clapps.clappsa.com")!
print(baseURL.absoluteString)
// http://clapps.clappsa.com
// 2)
let extendedURL = baseURL.appendingPathComponent("public", isDirectory: true)
print(extendedURL.absoluteString)
// http://clapps.clappsa.com/public/
// 3)
let finalURL = URL(string: "/img/3-mentee.jpg", relativeTo: extendedURL)!
print(finalURL.absoluteString)
// http://clapps.clappsa.com/img/3-mentee.jpg

预期成果:

http://clapps.clappsa.com/public/img/3-mentee.jpg

即使我尝试像这样使用extendedURL absoluteURL

let finalURL = URL(string: "/img/3-mentee.jpg", relativeTo: extendedURL.absoluteURL)!
print(finalURL.absoluteString)
// http://clapps.clappsa.com/img/3-mentee.jpg

我会得到同样的结果。

奇怪,但这种方法适用于其他一些不同的 URL。

您应该删除第一个/以获得预期的结果:

let finalURL = URL(string: "img/3-mentee.jpg", relativeTo: extendedURL)!
print(finalURL.absoluteString) // http://clapps.clappsa.com/public/img/3-mentee.jpg

可以在此处找到更详细的解释。

相关内容

  • 没有找到相关文章

最新更新