如果一个Enum
类型case
在新的操作系统版本中添加新的,如何在switch
语句中检查可用性?如下Enum
图StoreKit
所示
public enum Code : Int {
public typealias _ErrorType = SKError
case unknown
case clientInvalid
case paymentCancelled
case paymentInvalid
case paymentNotAllowed
case storeProductNotAvailable
@available(iOS 9.3, *)
case cloudServicePermissionDenied
@available(iOS 9.3, *)
case cloudServiceNetworkConnectionFailed
@available(iOS 10.3, *)
case cloudServiceRevoked
}
下面的代码是唯一的解决方案吗?太冗长了。
if #available(iOS 10.3, *) {
switch code {
//all cases available in 10.3
...
}
} else if #available(iOS 9.3, *) {
switch code {
//all cases available in 9.3
...
}
} else {
switch code {
//all cases available below 9.3
...
}
}
- - - - - - - - -新的 - - - - - - - - - - - - -
我认为这不是一个问题。一个写的所有案例switch
都可以,if
声明是不必要的。因为在低 iOS 版本中不会调用新添加的案例。