Open1
SwiftUI: Xcodeプレビュー時にだけコードが実行されるようにしたい

題名の通りなんですけども。
SwiftUIはプレビュー時にもコードがコンパイルされて実行されたうえで、その結果がXcode内に表示されているのですが、「このコードはプレビュー時だけ実行するようにしたいな」ということがあったりなかったりします。
(例えば今回の私のケースでは、フォーマッタに設定するカレンダのロケールですね)
#if targetEnvironment(xcodePreview)
のようなのがあれば良いのですが、ありません。
調べたところ、プレビューが実行されているプロセスの環境変数「XCODE_RUNNING_FOR_PREVIEWS
」に値1
が設定されるようなので、以下のようにすればプレビュー時だけ実行するようにでき、シミュレータや実機デバッグ時には(もちろんリリース時も)実行されないようになります。
#if DEBUG
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
// ここにプレビュー時にだけ実行されるコードを書く
end if
#endif