SwiftUI预览环境有Swift编译条件吗?

Gen*_*ure 6 conditional-compilation swift swiftui

Objective C具有预处理器,Swift具有允许在不同环境中使用不同代码的编译条件,例如用于调试或发布构建:

#if DEBUG
    print("debug message")
    doDebugAction()
#else
    doReleaseAction()
#endif
Run Code Online (Sandbox Code Playgroud)

我可以添加仅针对 SwiftUI 预览进行编译的代码吗?就像是:

#if targetEnvironment(swiftUIPreview) 
    static func mock() -> SomeStruct {
        // fill random data
    } 
#endif
Run Code Online (Sandbox Code Playgroud)

Ric*_*zio 9

不幸的是,它不存在任何编译条件,但您可以使用ProcessInfo

ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1"
Run Code Online (Sandbox Code Playgroud)