PreviewConsole

在你的 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)")
        }   
    }
}

使用控制台

从屏幕底部向上拖动条以查看已记录的消息。
单击控制台栏标题上的指示器以打开/关闭。(记住上次打开的位置)
向左滑动日志消息以查看其记录时间。

安装

Swift Package Manager

直接从 git 通过 Xcode 添加包。 https://github.com/disc0infern0/PreviewConsole

Cocoapods/Carthage 等

不幸的是,我对这些包管理器一无所知,所以您需要自己解决这些问题,但由于该包完全由两个 Swift 文件组成,我相信您会没事的。




待办事项 / 积压事项 / 不必要的画蛇添足?

如果有人感兴趣并有足够的动力,我可能会实现以下各项中的零项、一项或多项:-

许可证

版权所有 (c) 2021 Andrew Cowley。 请参阅附加的 LICENSE 文件。