簡體   English   中英

在 Swift 中檢查用於編譯應用程序的 Xcode/iOS SDK 版本

[英]Check Xcode/iOS SDK version used to compile the app in Swift

Let's say I'm building a SDK and I want it to work on both Xcode 10 and Xcode 11. What can I do to make some code like this to also compile in Xcode 10?

var style = UIStatusBarStyle.default
if #available(iOS 13.0, *) {
  style = UIStatusBarStyle.darkContent       
}

由於.darkContent僅在 iOS 13 上可用,我會假設if #available(iOS 13.0, *)就足夠了。 這在 Xcode 11 上工作正常,但在 Xcode 10 上我得到這個編譯錯誤:

類型“UIStatusBarStyle”沒有成員“darkContent”

在 Objective-C 我用過這種宏

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
// Use something that is only available on Xcode 11 and Xcode 10 doesn't understand
#endif

但這在 Swift 中不起作用

那么,在 Swift 上是否有類似的方法來檢測代碼是否在 Xcode 10 上運行或使用 SDK 12 編譯?

不完美,但你可以使用

#if compiler(>=5.1)
  if #available(iOS 13.0, *) {
    style = UIStatusBarStyle.darkContent       
  }
#endif. 

5.1 是 Xcode 11 附帶的編譯器版本,因此代碼不會在 Xcode 10 中編譯。除了編譯時#if檢查之外,您仍然需要運行時if #available檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM