2017-09-09 8 views
2

私はiOSの11とスウィフト4でLyftのAPIを使用しようとしています、と重複は「urlComponents」にアクセスしますが、変更は排他的アクセス

重複のアクセスである二行目、上のエラーが発生しますが必要です'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 
+1

を、これを試してください:VARのurlComponents =のURLComponents(URL:mutableURLRequest.url!resolvingAgainstBaseURL:偽)? のvarのLocalVariable = urlComponents のLocalVariable .queryItems =(?urlComponents .queryItems ?? [])+ queryItems、このurlComponentsようにそれをバックに割り当てます= localVariable – 3stud1ant3

+0

直前に編集で追加 –

+0

3stud1ant3は完璧に機能しました。私はそれを受け入れることができるように回答として提出しますか? –

答えて

6

私はあなたがローカル変数に最初に設定し、それを変更し、この試してみる必要があると思います:私はあなたがローカル変数に最初に設定し、それを変更する必要があると思います

var urlComponents = URLComponents(url: mutableURLRequest.url!, resolvingAgainstBaseURL: false) 
var localVariable = urlComponents 
urlComponents?.queryItems = (localVariable?.queryItems ?? []) + queryItems 
+1

3行目を次のように変更して4行目を削除することができます: 'urlComponents?.queryItems =(localVariable?.queryItems ?? [])+ queryItems' – rmaddy

+0

@rmaddyこれを更新しました。 – 3stud1ant3

関連する問題