如果一个Enum
类型在新的操作系统版本中添加了新的case
,如何在switch
语句中检查其可用性? 就像下面的StoreKit
中的Enum
一样
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
...
}
}
-----------------new-------------------------
我认为这不是一个问题。在一个switch
语句中编写所有情况是可以的,if
语句是不必要的,因为新添加的情况在低版本的iOS中不会被调用。