在你的 SwiftUI 预览中读取那些 print() 消息!!在预览屏幕上覆盖一个可调整大小的底部面板,显示打印/记录的消息
注意:导入后,只会向生产发布版本添加少量代码。例如,全局函数 log 和 Log 的单行定义,在生产代码中,它们都将默认为不执行任何操作,以及一个 EmptyView()。因此,调试后,包含日志消息的代码可以安全地保留在原位。
在你的预览定义所在文件的顶部添加以下内容:import PreviewConsole
然后,在您的预览部分,使用 console{ }
括起 Preview 的主体,例如:-
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
console {
ContentView()
}
}
}
也支持 console( ContentView() )
的替代形式
就这样!一个可拖动的控制台现在将出现在您的预览中。(并且仅在您的预览中)
要将消息记录到控制台,在命令式代码中,您可以继续使用 print()
(正常情况下?),或使用 log(_:,_:)
重要提示: 使用 print()
将继续在生产代码中产生输出,而发送到 log()
的任何消息将被静音。
第一个参数是任何表达式,通常是字符串。支持插值。
第二个参数可以省略,用于指示日志类型。
有效值为 .info
、.debug
、.trace
。如果未提供,则默认为 .debug。
例如:
func complexCalc() -> Int {
log("About to calculate a tricky number...")
return 7*6
log("This line should never be executed \(7*6)", .info )
log("Oh no, not again", .trace)
}
将根据 messageType 向日志显示不同的颜色。
在视图/声明性代码中,您可以使用 log 的替代形式;-
Log(_:,_:)
它采用与上述相同的参数,如果未提供第二个参数,则默认为 .debug
。返回一个 EmptyView(),并且文本消息将显示在控制台上。
例如:
struct DeepThought: View {
var body: some View {
VStack{
Log("About to show some tricky text")
Text("Tricky calculation: \(7*6)")
}
}
}
从屏幕底部向上拖动条以查看已记录的消息。
单击控制台栏标题上的指示器以打开/关闭。(记住上次打开的位置)
向左滑动日志消息以查看其记录时间。
直接从 git 通过 Xcode 添加包。 https://github.com/disc0infern0/PreviewConsole
不幸的是,我对这些包管理器一无所知,所以您需要自己解决这些问题,但由于该包完全由两个 Swift 文件组成,我相信您会没事的。
如果有人感兴趣并有足够的动力,我可能会实现以下各项中的零项、一项或多项:-
版权所有 (c) 2021 Andrew Cowley。 请参阅附加的 LICENSE 文件。