比较Swift中的Objective-C枚举值

时间:2014-12-19 23:20:50

标签: swift

我试图在Swift中这样做:

var netStatus:NetworkStatus = reachability.currentReachabilityStatus();
if (!netStatus) { // error here says network status not convertible to bool
    ....
}

typedef enum : NSInteger {
    NotReachable = 0,
    ReachableViaWiFi,
    ReachableViaWWAN
} NetworkStatus;

我也试过

if (netStatus ==0)
if (netStatus == NetworkStatus.NotReachable) // NetworkStatus.type does not have a member named 'NotReachable'

3 个答案:

答案 0 :(得分:2)

尝试使用现代的objective-c实践:

typedef NS_ENUM(NSInteger, NetworkStatus) {
        NetworkStatusNotReachable,
        NetworkStatusReachableViaWiFi,
        NetworkStatusReachableViaWAN
};

Adopting Modern Objective-C

答案 1 :(得分:0)

阅读Swift手册,了解如何定义枚举。它更像是

enum NetworkStatus:Int {
  case NotReachable = 0
  case Reach....
}

答案 2 :(得分:0)

不幸的是,枚举不能从Objective-C转移到Swift,它需要是一个NS_ENUM。

如果你可以改变枚举的定义,那么Daniel T.的解决方案是最好的。

但是,如果您无法更改枚举定义,那么您可以创建一个中间类来提供NS_ENUM和枚举值的映射。

有关详细信息,请参阅:https://stackoverflow.com/a/24950414/600753