当我尝试使用NSLog登录时,我遇到了这个错误:



这是我的代码:

if fileManager.fileExists(atPath: (drop.config["servers", "default", "KeyURL"]?.string ?? "default")) {
    NSLog("FILE AVAILABLE", "TESTNOTI")
} else {
    NSLog("FILE NOT AVAILABLE", "TESTNOTI")
}

为什么会发生这种情况,我该如何解决?

最佳答案

NSLog将格式字符串作为第一个参数,其后是
由参数列表代替占位符
以格式字符串(比较String Format Specifiers)。

在Apple平台上,可以使用String格式打印%@:

let fileName = "the file"
NSLog("File not found: %@", fileName)

但是,这不适用于Linux平台(例如Vapor)。
在这里,您必须将Swift字符串转换为C字符串才能通过
将其作为NSLog的参数(并对C字符串使用%s格式):
let fileName = "the file"
fileName.withCString {
    NSLog("File not found: %s", $0)
}

关于swift - '字符串'不符合预期的 'CVarArg'类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42670593/

10-13 05:50