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)