在控制台中打印字符串结果为 (Function)。为什么?

Printing a string results in (Function) in console. Why?

我正在尝试创建一个 base64 基本身份验证 header 以用于 API。在 swift 2.0 和 iOS9 中它开始给我带来问题,所以我想检查 headers 或 base64Credentials 的内容。不幸的是,我看到的只是(函数)。

    let credentialData = "demo@demo.com:demo123".dataUsingEncoding(NSUTF8StringEncoding)!
    let base64Credentials = credentialData.base64EncodedStringWithOptions  

    let headers = ["Authorization": "Basic \(base64Credentials)"]

    print("Here are the base64 encoded headers \(base64Credentials)")

产量

这里是base64编码的headers(函数)

如何找出这些字符串的值?

我是否遗漏了 Swift 2.0 中突然出现问题的新内容?

谢谢,

乔希

public func base64EncodedStringWithOptions(options: NSDataBase64EncodingOptions) -> String

是一个实例方法。调用函数和方法 括号中的零个或多个参数。在这种情况下,我们有一个 参数,可以是 [] 没有选项:

let credentialData = "demo@demo.com:demo123".dataUsingEncoding(NSUTF8StringEncoding)!
let base64Credentials = credentialData.base64EncodedStringWithOptions([])  

print("Here are the base64 encoded headers \(base64Credentials)")
// Here are the base64 encoded headers ZGVtb0BkZW1vLmNvbTpkZW1vMTIz

在你的代码中

let base64Credentials = credentialData.base64EncodedStringWithOptions

方法本身被分配给变量,并打印 作为“(函数)”。

Am I missing something new in Swift 2.0 that has suddenly made this a problem?

不,这与 Swift 1.2 中的问题相同。唯一的区别 是参数的 type,在 Swift 1.2 中你会指定 "no options" 作为 nil 而不是 []