当我尝试记录时,我正面临此错误。
remote: /tmp/build_f459d376d1bc10ac2e93e52575ac5ea9/Sources/App/main.swift:368:49: error: argument type 'String' does not conform to expected type 'CVarArg'
remote: NSLog("FILE NOT AVAILABLE", "TESTNOTI")
remote: ^~~~~~~~~~
remote: as! CVarArg
mycode的
if fileManager.fileExists(atPath: (drop.config["servers", "default", "KeyURL"]?.string ?? "default")) {
NSLog("FILE AVAILABLE", "TESTNOTI")
} else {
NSLog("FILE NOT AVAILABLE", "TESTNOTI")
}
答案 0 :(得分:12)
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)
}
答案 1 :(得分:1)
您似乎正在使用Vapor框架,我引用:
并非所有的核心库(基础)都可以在Linux上使用。
您在Vapor创建的问题已经得到了答案: https://github.com/vapor/vapor/issues/870