【发布时间】:2016-03-11 07:43:59
【问题描述】:
我正在编写为NSMutableURLRequest 设置Authorization: 标头的代码:
private func setAuthHeader(request: NSMutableURLRequest) {
let plain = NSString(format: "%@:%@", self.userName, self.password)
let plainBytes = plain.dataUsingEncoding(NSUTF8StringEncoding)!
let headerValue = NSString(format: "Basic %@", plainBytes.base64EncodedDataWithOptions(NSDataBase64EncodingOptions(rawValue: 0)))
request.setValue( headerValue, forHTTPHeaderField: "Authorization" )
}
但是当我为setValue 选择“转到定义”时,Xcode 显示为:
- (void)setValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field;
所以setValue 需要一个NSString 参数值,而headerValue 是我的NSString 类型的参数。
然而 Swift 编译器给了我这个错误信息:
RestClient.swift:33:21: '
NSString' 不能隐式转换为 'String';您的意思是使用 'as' 来显式转换吗?
String 是从哪里得到的?
自动修复是把它改成这样:
request.setValue( headerValue as String, forHTTPHeaderField: "Authorization" )
...但为什么认为这是必要的?
【问题讨论】: