我在用阿拉莫菲尔打电话。
主要功能如下:
public func request(URLRequest: URLRequestConvertible) -> Request {
...
return request
}
所以我创建了URLRequestConvertible并运行了Alamofire的请求方法。同时我也尝试添加HTTP头。
public func request(URLRequest: URLRequestConvertible) -> Request {
URLRequest.setValue("\random()" , forHTTPHeaderField : "identifier"
URLRequest.setValue("\buildversion()" , forHTTPHeaderField : "build"
return request
}
但什么也没发生,没有添加标题!只有在请求方法调用之前添加的头才存在。
问题是我认为URLRequest只是
get
而我不能set
它。有什么解决办法吗?public protocol URLRequestConvertible {
/// The URL request.
var URLRequest: NSMutableURLRequest { get }
}
有什么解决办法吗?
最佳答案
URLRequest
是一个结构,因此您可以修改方法本地副本;更改永远不会传播到外部。
您可以通过设置参数inout
来解决这个问题:
public func request(request: inout URLRequestConvertible) -> Request {
...
}
调用site时,还必须显式标记参数:
let myRequest = ...
request(&myRequest)
笔记:
如果可访问性是问题所在,则会收到编译器错误。
官方的编码风格指南告诉我们,变量使用小写字母。
使用类型作为变量名的信息量不是很大;使用同名的方法的信息量更少。