有没有办法来防止在Swift中插入字符串?
问题描述:
我尝试围绕一个简单的记录器的想法是这样的:有没有办法来防止在Swift中插入字符串?
log(constant: String, _ variable: [String: AnyObject]? = nil)
这将是这样使用:
log("Something happened", ["error": error])
不过,我想阻止不断的滥用/变化图案像下面这样:
log("Something happened: \(error)") // `error` should be passed in the `variable` argument
有没有一种方法,以确保constant
没有用绳子刑警构建通货膨胀?
答
你可以使用StaticString
代替String
:
func log(constant: StaticString, _ variable: [String: AnyObject]? = nil) {
// You can retrieve `String` from `StaticString`
let msg = constant.stringValue
}
let foo = 1
log("test \(foo)") // -> error: cannot invoke 'log' with an argument list of type '(String)'
'荚CocoaLumberjack' – nhgrif
@nhgrif感谢您的建议。我的问题并没有真正绑定到日志上下文,它更多的是关于字符串的纯文字和插值以及是否可以区分这些字符。 –
我知道。我只是沉重的,严重推荐对另一个日志库... – nhgrif