Using non NS_ENUM objective-C enum in swift

前端 未结 4 1856
你的背包
你的背包 2020-12-10 03:18

I am using the wahoo fitness API and it defines the following objective-C enum:

typedef enum
{
    /** No active connection. */
    WF_SENSOR_CONNECTION_STAT         


        
4条回答
  •  Happy的楠姐
    2020-12-10 03:55

    Here is the final complete solution:

    WFSensorConnection+SensorConnectionEnumCategory.h
    

    :

    #import 
    
    #import 
    
    @interface WFSensorConnection (SensorConnectionEnumCategory)
    
    typedef NS_ENUM(NSUInteger, ConnectionStatus) {
        ConnectionStatusIdle,
        ConnectionStatusConnecting,
        ConnectionStatusConnected,
        ConnectionStatusInterrupted,
        ConnectionStatusDisconnecting
    };
    
    - (ConnectionStatus) swift_connectionStatus;
    
    @end
    

    WFSensorConnection+SensorConnectionEnumCategory.m
    

    :

    #import "WFSensorConnection+SensorConnectionEnumCategory.h"
    
    @implementation WFSensorConnection (SensorConnectionEnumCategory)
    
    - (ConnectionStatus) swift_connectionStatus{
        if ( [self connectionStatus] == WF_SENSOR_CONNECTION_STATUS_IDLE ){
            return ConnectionStatusIdle;
        } else if ( [self connectionStatus] == WF_SENSOR_CONNECTION_STATUS_CONNECTING ){
            return ConnectionStatusConnecting;
        } else if ( [self connectionStatus] == WF_SENSOR_CONNECTION_STATUS_CONNECTED ){
            return ConnectionStatusConnected;
        } else if ( [self connectionStatus] == WF_SENSOR_CONNECTION_STATUS_DISCONNECTING ){
            return ConnectionStatusDisconnecting;
        } else if ( [self connectionStatus] == WF_SENSOR_CONNECTION_STATUS_INTERRUPTED ){
            return ConnectionStatusInterrupted;
        }
        return 0;
    }
    
    @end
    

    Bridging-Header.h
    

    :

    #import "WFSensorConnection+SensorConnectionEnumCategory.h"
    

    Usage:

    var sensorConnection: WFSensorConnection?
    var connState : ConnectionStatus = ConnectionStatus.Idle
    connState = sensorConnection!.swift_connectionStatus()
    switch connState {
        case ConnectionStatus.Idle:
    ...
    }
    

提交回复
热议问题