¿Enum rápida pierde valores inicializados cuando se establece como una propiedad?

He encontrado una solución, pero este problema me está molestando y pensé en compartirlo en caso de que alguien más tenga el mismo problema. Me encantaría saber por qué está sucediendo esto. En el siguiente código, puedo activar la enumeración bien durante el inicializador de clase cuando es una variable local. Almaceno el valor de enumeración en una propiedad. Pero cuando trato de activar la propiedad almacenada (llamada foo) en un método diferente (llamado barra ()) en el ejemplo a continuación, recibo advertencias del compilador y un error de que los miembros no son reconocidos. Parece saber que foo es un tipo MyEnum, pero no sabe que .ABC, .DEF y .GHI son miembros.


enum MyEnum {
    case ABC, DEF, GHI
}

class MyClass : NSObject {

    var foo : MyEnum!

    convenience init(foo: MyEnum) {

        self.init()

        self.foo = foo

        switch foo {

        case .ABC: println("ABC foo")
        case .DEF: println("DEF foo")
        case .GHI: println("GHI foo")
        default: println("no foo")

        }
    }

    func bar() {

        switch foo {

        case .ABC: println("ABC foo")
        case .DEF: println("DEF foo")
        case .GHI: println("GHI foo")
        default: println("no foo")

        }
    }
}

La solución alternativa es decir:

switch foo as MyEnum { }

o declarar una variable local en el método como

let x : MyEnum = foo

switch x {  }

Una vez más, me alegro de haber encontrado una solución, pero me gustaría saber si este es el comportamiento esperado o si es necesario archivar un radar con Apple. Este es Xcode 6.2, por cierto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta