【发布时间】:2017-06-02 09:39:52
【问题描述】:
如果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
...
}
}
------------------新----------------------------
我认为这不是一个问题。写在一个switch 中的所有案例都很好,if 语句是不必要的。因为iOS低版本不会调用新增的case。
【问题讨论】:
标签: swift availability