在Swift 3中使用Objective C typedef enum时出错

时间:2017-01-06 23:09:39

标签: objective-c swift

我尝试使用Apple提供的Reachability课程。

它有一个像这样的Objective-C枚举:

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

在Swift中,我正在做这样的事情:

if let networkReachability = notification.object as? Reachability {
    let remoteHostStatus = networkReachability.currentReachabilityStatus()
    let center = NotificationCenter.default
    var notificationKey: String

    if (remoteHostStatus == NetworkStatus.NotReachable) {
        ...
    }
}

但我收到错误:

  

类型'NetworkStatus'没有成员'NotReachable'

我做错了什么?如何在Swift中使用Objective-C enum

2 个答案:

答案 0 :(得分:1)

如果您定义如下的枚举,则可以NetworkStatus.NotReachable等方式访问它:

typedef NS_ENUM(NSInteger, NetworkStatus) {
    NotReachable = 0,
    ReachableViaWiFi,
    ReachableViaWWAN
};

答案 1 :(得分:1)

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

这是一个普通的" C enum。所以它没有命名空间到达Swift;名称NotReachableReachableViaWiFiReachableViaWWAN可以直接使用 。请注意,没有前一个点(.)。