Как использовать NSStreamEvents в Swift?

У меня проблемы с использованием событий, которые генерируют мои объекты NSStream.

В obj C это примерно так:

- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
    switch (streamEvent) {
    case NSStreamEventOpenCompleted:
        NSLog(@"Stream opened");
        break;
    case NSStreamEventHasBytesAvailable:
        break;          
    case NSStreamEventErrorOccurred:
        NSLog(@"Can not connect to the host!");
        break;
    case NSStreamEventEndEncountered:
        break;
    default:
        NSLog(@"Unknown event");
    }
}

Как мне это сделать в Swift? я не понимаю ссылку NSStreamEvent. В Obj C его Enum И в быстром его структура. Любые идеи о том, как использовать это, как приведенный выше пример?

1 ответ

NSStreamEvent соответствует OptionSetType в Swift 2: это определяется как struct с static vars для каждого из возможных значений, так что вы можете использовать его как перечисление.

Из перечислений:

В Swift наборы параметров представлены структурами, соответствующими протоколу OptionSetType, со статическими переменными для каждого значения параметра. Наборы параметров ведут себя как набор коллекций Swift. Вы используете insert(_:) или же unionInPlace(_:) методы для добавления значений опций, remove(_:) или же subtractInPlace(_:) методы для удаления значений опций и contains(_:) метод для проверки значения параметра. Вы создаете новое значение набора параметров, используя литерал массива, получая доступ к значениям параметров с начальной точкой (.) похоже на перечисление. Пустой набор опций может быть создан из литерала пустого массива ([]) или вызывая его инициализатор по умолчанию.

Другие вопросы по тегам