我正在尝试在 Swift 4/iOS 11 中为 os_log 编写一个方便的包装器,但我在传递可变参数方面遇到了一场艰苦的战斗。
基本上,我想编写一个如下所示的函数。
static let logger = OSLog(subsystem: "com.example.foo", category: "foobar")
func logError(_ message: StaticString, _ args: Any...) {
os_log(message, log: logger, type: .error, args)
}
不幸的是,我似乎无法弄清楚传递参数的神奇语法,并且在 CVarArg 讨论的泥潭中有点迷失了方向。
(...这让我想念 Python 的拼写语法)
最佳答案
我还没有找到解决方案,所以做了这个愚蠢的 hack:
switch args.count {
case 0:
os_log(message, log: log!, type: type)
case 1:
os_log(message, log: log!, type: type, args[0])
case 2:
os_log(message, log: log!, type: type, args[0], args[1])
case 3:
os_log(message, log: log!, type: type, args[0], args[1], args[2])
default:
os_log(message, log: log!, type: type, args)
}
关于ios - 在 Swift 4 中为 os_log 传递可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498121/