gpt4 book ai didi

string - NSString 不能隐式转换为 String - 但一切都是 NSString

转载 作者:行者123 更新时间:2023-11-28 08:43:19 25 4
gpt4 key购买 nike

我正在编写代码来为 NSMutableURLRequest 设置 Authorization: header :

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 选择“Go to definition”时,Xcode 显示为:

- (void)setValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field;

所以 setValue 需要一个 NSString 参数值,而 headerValue 是我的 NSString 类型的参数。

但是 Swift 编译器给我这个错误信息:

RestClient.swift:33:21: 'NSString' is not implicitly convertible to 'String'; did you mean to use 'as' to explicitly convert?

它从哪里得到String

自动修复是将其更改为:

request.setValue( headerValue as String, forHTTPHeaderField: "Authorization" )

...但为什么认为这是必要的?

最佳答案

实际上,您在问题中给出的定义是 setValue 函数的 Obj-C 签名。 Swift 函数具有以下声明,您可以在 Apple 的 NSMutableURLRequest 文档中看到 here :

Declaration

func setValue(_ value: String?, forHTTPHeaderField field: String)

关于string - NSString 不能隐式转换为 String - 但一切都是 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35934792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com