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)
}