NSString不能隐式转换为String,但所有内容都是NSString
我正在编写代码,为NSString不能隐式转换为String,但所有内容都是NSString,string,swift,nsstring,String,Swift,Nsstring,我正在编写代码,为NSMutableURLRequest设置授权:头: private func setAuthHeader(request: NSMutableURLRequest) { let plain = NSString(format: "%@:%@", self.userName, self.password) let plainBytes = plain.dataUsingEncoding(NSUTF8StringEncoding)! let
NSMutableURLRequest
设置授权:
头:
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" )
…但为什么认为这是必要的?实际上,您在问题中给出的定义是setValue函数的Obj-C签名。Swift函数具有以下声明,如您在Apple的NSMutableURLRequest文档中所见: 声明
func setValue(_ value: String?, forHTTPHeaderField field: String)
实际上,您在问题中给出的定义是setValue函数的Obj-C签名。Swift函数具有以下声明,如您在Apple的NSMutableURLRequest文档中所见: 声明
func setValue(_ value: String?, forHTTPHeaderField field: String)