Swift URL appendPathComponent替换?与%3F

mar*_*cks 12 swift

我有一个包含线路的路由器

var url = URL(string: MyRouter.baseURLString)!

url.appendPathComponent(relativePath)
Run Code Online (Sandbox Code Playgroud)

这取代了"?" "%3F"被API服务器拒绝.我怎样才能解决这个问题?编码该字符是错误的.

Cod*_*ent 11

因为?它不是路径的一部分.它是一个分隔符,用于指示查询字符串的开头.您可以在本文中阅读有关URL的不同组件的信息.每个组件都有一组有效字符,不在该组中的任何内容都需要进行百分比转义.最好的选择是使用URLComponents自动处理转义:

var urlComponents = URLComponents(string: MyRouter.baseURLString)!
urlComponents.queryItems = [
    URLQueryItem(name: "username", value: "jsmith"),
    URLQueryItem(name: "password", value: "password")
]

let url = urlComponents.url!
Run Code Online (Sandbox Code Playgroud)