Перечисление Swift теряет инициализированные значения при установке в качестве свойства?

Я нашел обходной путь, но эта проблема меня раздражает, и я подумал, что поделюсь, если у кого-то возникнет такая же проблема. Хотелось бы знать, почему это происходит. В приведенном ниже коде я могу очень просто включить перечисление во время инициализации класса, когда это локальная переменная. Я сохраняю значение enum в свойстве. Но когда я пытаюсь включить хранимое свойство (с именем foo) в другом методе (с именем bar ()) в приведенном ниже примере - я получаю предупреждения компилятора и ошибку, что члены не распознаются. Кажется, он знает, что foo является типом MyEnum, но не знает, что .ABC, .DEF и .GHI являются членами.


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")

        }
    }
}

Обходной путь должен либо сказать:

switch foo as MyEnum { }

или объявить локальную переменную в методе, как

let x : MyEnum = foo

switch x {  }

Опять же, я рад, что нашел обходной путь, но наверняка хотел бы знать, является ли это ожидаемым поведением или нужно подать радар в Apple. Это Xcode 6.2, кстати.

Ответы на вопрос(1)

Ваш ответ на вопрос