我正在使用 Alamofire 进行网络调用。
主要功能如下:
public func request(URLRequest: URLRequestConvertible) -> Request {
...
return request
}
所以我创建了 URLRequestConvertible 并运行了 Alamofire 的request 方法。同时我还尝试添加 HTTP header 。
public func request(URLRequest: URLRequestConvertible) -> Request {
URLRequest.setValue("\random()" , forHTTPHeaderField : "identifier"
URLRequest.setValue("\buildversion()" , forHTTPHeaderField : "build"
return request
}
但是没有任何反应,没有添加标题!只有在请求方法调用之前添加的 header 存在。
问题是我相信 URLRequest 只是 get
而我不能 set
它。有什么解决方法吗?
public protocol URLRequestConvertible {
/// The URL request.
var URLRequest: NSMutableURLRequest { get }
}
有什么解决方法吗?
最佳答案
URLRequest
是一个结构,因此您可以修改方法本地副本;变化永远不会传播到外面。
你通过使参数inout
来解决这个问题:
public func request(request: inout URLRequestConvertible) -> Request {
...
}
Call-site,你也必须显式标记参数:
let myRequest = ...
request(&myRequest)
注意事项:
- 如果可访问性是问题所在,您就会收到编译器错误。
- 官方编码风格指南告诉我们对变量使用小写字母。
- 使用类型作为变量名不是很有用;有一个同名的方法就更不用说了。
关于swift - 更改 Alamofire 中所有请求的 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40597430/