利用 Swift 的 Conditional Compilation Block 判斷不同的平台,區分模擬器跟實機,是否可以 import & Swift 版本

使用 Swift 開發程式時,我們時常需要依不同的情況做不同的處理,比方判斷不同的 iOS 版本,不同的平台(比方 iOS & macOS),區分模擬器跟實機等。

想判斷不同的 iOS 版本,可透過以下連結提到的 available。

至於判斷不同的平台,區分模擬器跟實機,是否可以 import & Swift 版本等 ,則可透過 Swift 的 Conditional Compilation Block。

Conditional Compilation Block 的語法如下,類似我們熟悉的 if else,主要由 #if,#elseif,#else & #endif 組成。

它可以判斷的東西很多,詳細清單可參考下表。

以下我們舉一些例子說明。

判斷 plateform,比方 iOS & macOS

struct ContentView: View {
var body: some View {
#if os(iOS)
VStack {
Image("HomePod mini 1")
.resizable()
.scaledToFit()
Text("HomePod mini")
}
#elseif os(macOS)
HStack {
Text("HomePod mini")
Image("HomePod mini 2")
.resizable()
.scaledToFit()
}
#endif
}
}

在 iOS 顯示的畫面是文字跟圖片上下排列。

在 macOS 顯示的畫面是文字跟圖片左右排列。

判斷是否可以 import

判斷是否可以 import ARKit。

#if canImport(ARKit)
import ARKit
#endif

區分模擬器跟實機

在模擬器跟實機做不同的事情。

#if targetEnvironment(simulator)
print("select album photo")
#else
print("camera & select album photo")
#endif

判斷 swift 版本

#if swift(>=5.7)
print("Swift >= 5.7")
#else
print("Swift < 5.7")
#endif

參考連結

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store