Swift print () печатает имя типа вместо связанного с перечислением значения - PullRequest
0 голосов
/ 23 ноября 2018

Я печатаю пару перечислений в методах делегатов для WebRTC.Сравнение их или использование операторов switch работает нормально, но одно из перечислений просто печатает имя своего типа вместо связанного значения:

func peerConnection(_ peerConnection: RTCPeerConnection, didChange newState: RTCPeerConnectionState) {
    // I don't know why this only prints the type name and not the associated value
    print ("peerConnectionState \(newState)")
}

func peerConnection(_ peerConnection: RTCPeerConnection, didChange newState: RTCIceConnectionState) {
    print("ICEConnectionState: \(newState)")
}

Это печатает

peerConnectionState: RTCPeerConnectionState
ICEConnectionState: connected

RTCPeerConnectionState никогда не печатает связанный с ним типзначение, даже если я проверяю его rawValue, это допустимый член перечисления.Оба они определены в PeerConnectionState.h как показано ниже:

/** Represents the ice connection state of the peer connection. */
typedef NS_ENUM(NSInteger, RTCIceConnectionState) {
  RTCIceConnectionStateNew,
  RTCIceConnectionStateChecking,
  RTCIceConnectionStateConnected,
  RTCIceConnectionStateCompleted,
  RTCIceConnectionStateFailed,
  RTCIceConnectionStateDisconnected,
  RTCIceConnectionStateClosed,
  RTCIceConnectionStateCount,
};

/** Represents the combined ice+dtls connection state of the peer connection. */
typedef NS_ENUM(NSInteger, RTCPeerConnectionState) {
  RTCPeerConnectionStateNew,
  RTCPeerConnectionStateConnecting,
  RTCPeerConnectionStateConnected,
  RTCPeerConnectionStateDisconnected,
  RTCPeerConnectionStateFailed,
  RTCPeerConnectionStateClosed,
};

Я не очень много знаю о мостах ObjC-Swift, кажется, что все это "просто работает".В чем разница между двумя перечислениями, которые только влияют на print ()?

...