¿Cómo escribiría este typedef enum del objective c a swift?

A continuación, tengo el código objective-c que se utiliza para el efecto de animation de estilo yesca, inspirado en https://github.com/ngutman/TinderLikeAnimations/tree/master/TinderLikeAnimations .

C objective

typedef NS_ENUM(NSUInteger , GGOverlayViewMode) { GGOverlayViewModeLeft, GGOverlayViewModeRight }; - (void)setMode:(GGOverlayViewMode)mode { if (_mode == mode) return; _mode = mode; if (mode == GGOverlayViewModeLeft) { self.imageView.image = [UIImage imageNamed:@"button1"]; } else { self.imageView.image = [UIImage imageNamed:@"button2"]; } } 

Estoy intentando replicar lo mismo de manera rápida. Esto es lo que tengo rápido:

 enum GGOverlayViewMode : Int { case GGOverlayViewModeLeft case GGOverlayViewModeRight } func setMode(mode: GGOverlayViewMode){ // if (_ mode == mode) { // return // } // // _mode = mode; if(mode == GGOverlayViewMode.GGOverlayViewModeLeft) { imageView.image = UIImage(named: "button1") } else { imageView.image = UIImage(named: "button2") } } 

Pero de alguna manera no tiene sentido cómo manejar las typdefs aquí.

Cualquier ayuda es apreciada.

Gracias

En Swift cada enumeración tiene sus propios valores de miembro, por lo que no tiene que darles un prefijo único como en (Objective-) C. Una definición típica sería

 enum GGOverlayViewMode { case Left case Right } 

Además, no tiene que especificar un "tipo bruto" subyacente (como Int ), a less que tenga otros motivos para hacerlo.

En lugar de un método de establecimiento personalizado, implementarías un observador de properties . didSet se didSet inmediatamente después de que se almacena el nuevo valor, y tiene un parámetro implícito oldValue contiene el valor de propiedad anterior:

 var mode : GGOverlayViewMode = .Right { didSet { if mode != oldValue { switch mode { case .Left : imageView.image = UIImage(named: "button1") case .Right: imageView.image = UIImage(named: "button2") } } } } 

Creo rápido, tu function se verá así.

 enum GGOverlayViewMode : Int { case GGOverlayViewModeLeft case GGOverlayViewModeRight } func setMode(mode: GGOverlayViewMode){ switch mode { case .GGOverlayViewModeLeft: imageView.image = UIImage(named: "button1") case .GGOverlayViewModeRight: imageView.image = UIImage(named: "button2") } }