有没有办法来防止在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没有用绳子刑警构建通货膨胀?

+0

'荚CocoaLumberjack' – nhgrif

+0

@nhgrif感谢您的建议。我的问题并没有真正绑定到日志上下文,它更多的是关于字符串的纯文字和插值以及是否可以区分这些字符。 –

+0

我知道。我只是沉重的,严重推荐对另一个日志库... – nhgrif

你可以使用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)'