i've found work-around, problem vexing me , thought i'd share in case else having same problem. love know why happening. in code below, can switch on enum fine during class initializer when it's local variable. store enum value property. when try switch on stored property (named foo) in different method (named bar()) in example below - compiler warnings , error member(s) not recognized. seems know foo myenum type, doesn't know .abc, .def, , .ghi members. 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: prin...