Ios 如何将这个typedef枚举从objective c写入swift?

Ios 如何将这个typedef枚举从objective c写入swift?,ios,objective-c,swift,Ios,Objective C,Swift,下面,我有objective-c代码,用于tinder风格的动画效果,灵感来自- 目标-c typedef NS_ENUM(NSUInteger , GGOverlayViewMode) { GGOverlayViewModeLeft, GGOverlayViewModeRight }; - (void)setMode:(GGOverlayViewMode)mode { if (_mode == mode) return; _mode = mode;

下面,我有objective-c代码,用于tinder风格的动画效果,灵感来自-

目标-c

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"];
    }
}
我试图在swift中复制同样的内容。这就是我在斯威夫特的作品-

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")
        }
    }
但不知何故,我在这里如何处理typdefs是没有意义的

感谢您的帮助

谢谢,在Swift中,每个成员都有自己的成员值,因此您不必给出 它们是(Objective-)C中唯一的前缀。典型的定义是

enum GGOverlayViewMode  {
    case Left
    case Right
}
此外,您不必指定底层的“原始类型”(例如
Int
),除非 你有其他理由这样做

您将实现一个自定义setter方法,而不是自定义setter方法。
didSet
在存储新值后立即调用,并具有隐式 包含旧属性值的参数
oldValue

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

我认为在swift中,您的函数将如下所示

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

您不需要在swift中使用
typedef
enum
s;你只是像以前一样定义它们。我不确定我是否理解你的问题。你的实现看起来很完整。您不应该期望swift和obj-c关键字之间存在一对一的映射。知道了。多谢。