2017-01-06 8 views
0

アップルが提供するReachabilityクラスを使用しようとしています。SwiftのObjective C typedef enumを使用しているエラー3

これは、Objective-Cの列挙このようにあります。

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

かつ迅速に、私はこのような何かやってる:

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

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

をしかし、私はエラーを取得する:

Type 'NetworkStatus' has no member 'NotReachable'

私は何が間違っていますか? SwiftのObjective-C enumはどのように使用できますか?

+0

NS_ENUMでマークされた列挙型はSwiftの 'enum'型としてインポートされます。これは、 "Using Swco with Cocoa and Objective-C"のリファレンスに*記載されています。 –

答えて

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

これは「普通の」C列挙型です。だからそれは名前空間を持たないSwiftに到着する。 NotReachable,ReachableViaWiFi、およびReachableViaWWANの名称を使用することができます。直接。先行するドット(.)がないことに注意してください。

+1

このトピックの詳細については、私のオンラインブックをご覧ください:http://www.aptt.com/swiftBook/apa.html#_c_enums – matt

1

次のようにあなたがあなたの列挙型を定義する場合、それはNetworkStatus.NotReachableとしてアクセスできるようになりますが、等:

typedef NS_ENUM(NSInteger, NetworkStatus) { 
    NotReachable = 0, 
    ReachableViaWiFi, 
    ReachableViaWWAN 
}; 
関連する問題