重叠访问'urlComponents',但修改需要独占访问权限

Joh*_* II 14 swift swift4 xcode9-beta

我试图使用与iOS 11和Swift 4的Lyft API,并在第二行收到错误,这是

重叠访问'urlComponents',但修改需要独占访问; 考虑复制到局部变量.

我不确定这意味着什么,以及如何绕过它.任何帮助表示赞赏,谢谢!

let queryItems = parameters
    .sorted { $0.0 < $1.0 }
    .flatMap { components(forKey: $0, value: $1) }
var urlComponents = URLComponents(url: mutableURLRequest.url!, resolvingAgainstBaseURL: false)
urlComponents?.queryItems = (urlComponents?.queryItems ?? []) + queryItems //error here
Run Code Online (Sandbox Code Playgroud)

3st*_*nt3 29

我想你需要首先设置一个局部变量,然后更改它,试试这个:

var urlComponents = URLComponents(url: mutableURLRequest.url!, resolvingAgainstBaseURL: false) 
var localVariable = urlComponents 
urlComponents?.queryItems = (localVariable?.queryItems ?? []) + queryItems  
Run Code Online (Sandbox Code Playgroud)


Mar*_*n R 5

在这种情况下,问题是对可选 控件的重叠访问因此最简单的解决方案是urlComponents在对其进行突变之前将其拆开 queryItems

if var urlComponents = URLComponents(url: mutableURLRequest.url!, resolvingAgainstBaseURL: false) {
    urlComponents.queryItems = (urlComponents.queryItems ?? []) + queryItems
    // ...
}
Run Code Online (Sandbox Code Playgroud)