To my knowledge, you can’t do exactly what you’re trying to do, but this is close:
for subclassObject in objects { switch subclassObject.self { case is Subclass1: doSomethingWith(subclassObject as! Subclass1) case is Subclass2: doSomethingWith(subclassObject as! Subclass2) case is Subclass3: doSomethingWith(subclassObject as! Subclass3) default: break } } On Fri, Jul 8, 2016 at 10:11 AM, Nate Birkholz via swift-users < swift-users@swift.org> wrote: > This looks like it doesn't work (swift 2.x), but wanted to be sure it's > not supported: > > class Superclass {} > class Subclass1 : Superclass {} > class Subclass2 : Superclass {} > class Subclass3 : Superclass {} > > let sc1 = Subclass1() > let sc2 = Subclass2() > let sc3 = Subclass3() > > let objects : [Superclass] = [sc1, sc2, sc3] > > for subclassObject in objects { > switch subclassObject { > case let object = subclassObject as? Subclass1: > doSomethingWith(object) > case let object = subclassObject as? Subclass2: > doSomethingWith(object) > case let object = subclassObject as? Subclass3: > doSomethingWith(object) > default: > return > } > } > This gives an error, expecting a colon (:) after object on every case. > > I wanted to be sure I wasn't missing something in my syntax (nor some > obvious-to-others reason this isn't supported) before going to swift > evolution. > > > -- > Nate Birkholz > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users