相关疑难解决方法(0)

Xcode 12 和 OSLog (os.log):包装 OSLogMessage 导致编译错误:参数必须是字符串插值

在 Xcode 12 / iOS 14 中,OSLog 获得了对字符串插值的支持(是的!)。但是仍然无法附加钩子来轻松登录到其他渠道,例如 Crashlytics。

所以我想我会做一个简单的包装器并传递参数。然而,字符串插值似乎发生了一些神奇的事情。

提供的新 Logger 类,它接受一个OSLogMessage作为参数,可以按如下方式使用:

let someVar = "some var"
let logger = Logger(subsystem: "com.my.app", category: "UI")

logger.error("some message")
logger.error("some message with default var: \(someVar)")
logger.error("some message with private var: \(someVar, privacy: .private)")
logger.error("some message with private var: \(someVar, privacy: .private(mask: .hash))")
logger.error("some message with public var: \(someVar, privacy: .public)")
Run Code Online (Sandbox Code Playgroud)

包装新的 Logger 结构

所以让我们把它包装在一个结构中:

struct MyLogger {
    let logger = Logger(subsystem: "com.my.app", category: "UI")

    func error(_ message: OSLogMessage) {
        logger.error(message) …
Run Code Online (Sandbox Code Playgroud)

string xcode string-interpolation swift oslog

5
推荐指数
2
解决办法
1468
查看次数

标签 统计

oslog ×1

string ×1

string-interpolation ×1

swift ×1

xcode ×1