2015-08-14 4 views
2

Я использую FreeStreamer в Swift и пытаюсь установить блок onStateChange.Как сравнить Obj C enum в Swift?

audioStream.onStateChange = { (state) in 
    if state == kFsAudioStreamBuffering { 
     //blah 
    } 
} 

Я получаю эту ошибку:

Binary operator '==' cannot be applied to operands of type '(FSAudioStreamState)' and 'FSAudioStreamState' 

Edit: Еще та же ошибка без скобок вокруг состояния в блоке PARAMS

EDIT: В качестве временного исправления, state.value == kFsAudioStreamBuffering.value работает

+0

Вы можете удалить скобки из '(state)'? – keithbhunter

+0

по-прежнему та же ошибка – mergesort

ответ

1

попробуйте положить точку (.) Перед kFsAudioStreamBuffering примерно так:

if state == .kFsAudioStreamBuffering { 
    //blah 
} 

UPDATE: Попробуйте вместо

audioStream.onStateChange = { state in 
    if state.value == kFsAudioStreamBuffering.value { 
     //blah 
    } 
} 
+0

Не работает. 'Не удалось найти участника 'kFsAudioStreamBuffering'' – mergesort

+0

Идея правильная, но это, вероятно, будет только' .Buffering'. – Sulthan

+0

Никаких операций с логической перестановкой – mergesort

0

Это должно быть что-то вроде этого, чтобы заставить его работать.

self.audioControler?.onStateChange = { (state:FSAudioStreamState) -> Void in 
     switch state { 
     case .fsAudioStreamRetrievingURL: 
Смежные вопросы