如何在Swift中使用NSStreamEvents?

时间:2014-08-30 17:34:13

标签: xcode events event-handling swift nsstream

我无法使用我的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并且在swift中它是一个结构。关于如何使用它的任何想法都像上面的例子一样?

1 个答案:

答案 0 :(得分:0)

NSStreamEvent符合Swift 2中的OptionSetType:对于每个可能的值,它被定义为struct static var,因此您可以像枚举一样使用它。

来自Enumerations

  

在Swift中,选项集由符合OptionSetType协议的结构表示,每个选项值都有静态变量。选项集的行为类似于Swift的Set集合类型。您可以使用insert(_:)unionInPlace(_:)方法添加选项值,使用remove(_:)subtractInPlace(_:)方法删除选项值,使用contains(_:)方法检查选项值期权价值。您可以使用数组文字创建新的选项集值,使用类似于枚举的前导点(.)访问选项值。可以从空数组文本([])或通过调用其默认初始化程序创建空选项集。