Я печатаю пару перечислений в методах делегатов для 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 ()?