NSNotification을 통해받은 값과 열거 형 값을 비교하는 간단한 작업을 수행하려고합니다. 나는 작동하는 무언가가 있지만, 이것이 이것이 올바른 방법이라고 믿을 수는 없습니다. 기본적으로 해결책은 NSNumber를 Int로 변환하고 NSNumber에서 값을 래핑 한 다음 해당 integerValue를 가져 오는 enum 값의 rawValue를 얻는 것입니다.NSNumber를 신속한 열거 형 값과 어떻게 비교합니까?
내가 시도한 다른 모든 것은 Uint 8과 Int 또는 이와 유사한 것으로 변환 할 수 없다는 컴파일러 오류가 발생했습니다.
observer = NSNotificationCenter.defaultCenter().addObserverForName(AVAudioSessionRouteChangeNotification, object: nil, queue: mainQueue) { notification in
println(AVAudioSessionRouteChangeReason.NewDeviceAvailable.toRaw())
if let reason = notification.userInfo[AVAudioSessionRouteChangeReasonKey!] as? NSNumber {
if (reason.integerValue == NSNumber(unsignedLong:AVAudioSessionRouteChangeReason.NewDeviceAvailable.toRaw()).integerValue) {
self.headphoneJackedIn = true;
} else if (reason.integerValue == NSNumber(unsignedLong:AVAudioSessionRouteChangeReason.OldDeviceUnavailable.toRaw()).integerValue) {
self.headphoneJackedIn = false;
}
self.updateHeadphoneJackLabel()
}
}
'fromRaw'를 대신 사용하는 것은 어떻습니까? – ColinE