Swift ';字符串';不符合预期的类型';CVarArg';

Swift ';字符串';不符合预期的类型';CVarArg';,swift,vapor,Swift,Vapor,当我尝试使用NSLog登录时,我遇到了以下错误: 这是我的代码: if fileManager.fileExists(atPath: (drop.config["servers", "default", "KeyURL"]?.string ?? "default")) { NSLog("FILE AVAILABLE", "TESTNOTI") } else { NSLog("FILE NOT AVAILABLE", "TESTNOTI") } 为什么会发生这种情况?我如何修复它

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

这是我的代码:

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

为什么会发生这种情况?我如何修复它?

NSLog
将格式字符串作为第一个参数,后面是格式字符串 通过替换占位符的参数列表 格式字符串(比较)

在Apple平台上,您可以使用
%@
格式打印
字符串

let fileName = "the file"
NSLog("File not found: %@", fileName)
但是,这在Linux平台(如Vapor)上不起作用。 在这里,您必须将Swift字符串转换为C字符串才能通过 它作为NSLog的参数(并对C字符串使用
%s
格式):


您似乎正在使用Vapor框架,我引用:

并非所有的核心库(基础库)都可以在Linux上使用

你在Vapor提出的问题已经得到了答案:

共享一些代码行。
as在哪里!错误消息中的CVarArg
来自何处?代码里没有。除此之外,在
NSLog
中使用两个参数而没有任何占位符(
%@
)是毫无意义的
let fileName = "the file"
NSLog("File not found: %@", fileName)
let fileName = "the file"
fileName.withCString {
    NSLog("File not found: %s", $0)
}