Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios map方法如何处理字符串类型?_Ios_Swift_Alamofire - Fatal编程技术网

Ios map方法如何处理字符串类型?

Ios map方法如何处理字符串类型?,ios,swift,alamofire,Ios,Swift,Alamofire,我一直在浏览Alamofire源代码,其中有一段代码片段我无法理解它是如何工作的以及为什么工作的 if var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false), !parameters.isEmpty { let percentEncodedQuery = (urlComponents.percentEncodedQuery.map { $0 + "&" } ?? "") + quer

我一直在浏览
Alamofire
源代码,其中有一段代码片段我无法理解它是如何工作的以及为什么工作的

if var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false), !parameters.isEmpty {
    let percentEncodedQuery = (urlComponents.percentEncodedQuery.map { $0 + "&" } ?? "") + query(parameters)
    urlComponents.percentEncodedQuery = percentEncodedQuery
    urlRequest.url = urlComponents.url
}
这是
urlComponents.percentEncodedQuery.map{$0+“&”}??“”)
我不明白它是如何工作的,为什么需要这样做

然后我写下了我的片段:

import Foundation

let a: String = "hello world"

a.map { $0 + "&" } //error: binary operator '+' cannot be applied to operands of type 'Character' and 'String'

print(a)
但是它给出了
map
方法的错误


为什么这不起作用,以及
urlComponents.percentEncodedQuery.map{$0+“&}的目的是什么??“”)

它不是
字符串上的
映射,而是
字符串上的
映射(
可选
)。完全不同的方法

当此可选实例不是nil时,计算给定的闭包,并将未包装的值作为参数传递

基本上,代码可以重写为:

(urlComponents.percentEncodedQuery?.appending("&") ?? "") + query(parameters)