Как использовать 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 var
s для каждого из возможных значений, так что вы можете использовать его как перечисление.
Из перечислений:
В Swift наборы параметров представлены структурами, соответствующими протоколу OptionSetType, со статическими переменными для каждого значения параметра. Наборы параметров ведут себя как набор коллекций Swift. Вы используете
insert(_:)
или жеunionInPlace(_:)
методы для добавления значений опций,remove(_:)
или жеsubtractInPlace(_:)
методы для удаления значений опций иcontains(_:)
метод для проверки значения параметра. Вы создаете новое значение набора параметров, используя литерал массива, получая доступ к значениям параметров с начальной точкой (.
) похоже на перечисление. Пустой набор опций может быть создан из литерала пустого массива ([]
) или вызывая его инициализатор по умолчанию.