You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OSLog(Logger)时字符串插值报错,求解决技巧

解决OSLog(Logger)字符串插值问题的实用技巧

既然你只需要在控制台看日志,不需要OSLog的结构化检索功能,完全可以绕开它的类型安全插值限制,用更简单的方式搞定:

方法1:直接用普通字符串插值

OSLog其实支持把普通String转成OSLogMessage,你可以像以前那样直接拼接内容,再传给日志方法:

let customObj = CustomType(name: "demo")
Logger().info("\(customObj) - 当前数值:\(currentValue)")

要是碰到自定义类型转字符串报错,显式用String(describing:)转一下就行:

Logger().info("\(String(describing: customObj))")

方法2:封装个简化日志工具

写个Logger的扩展,把普通字符串自动转成OSLogMessage,省得每次重复处理:

extension Logger {
    func printLog(_ msg: String, level: OSLogType = .info) {
        self.log(level: level, "\(msg)")
    }
}

// 用起来就跟旧日志方式一样
Logger().printLog("自定义对象:\(customObj),计数:\(count)")

类型歧义问题的快速解决

如果碰到Cannot convert value of type 'String' to expected argument type 'OSLogMessage'这类报错,在字符串外面再加一层\()(也就是你说的双重插值)能临时解决,但用上面两种方法就能彻底摆脱这种繁琐操作。

这种方法虽然放弃了OSLog的结构化日志能力,但完全满足你只看控制台日志的需求,操作和旧日志方式几乎没区别,改造成本最低。

内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:41:06