【问题标题】:Why do enums not work in Swift?为什么枚举在 Swift 中不起作用?
【发布时间】:2015-04-23 10:01:37
【问题描述】:

所以我在这样的 .h 文件中有一个枚举:

@interface Scene: SKScene

    enum ScreenSize {
        SMALL, MEDIUM, LARGE
    };

    //Some other stuff...
@end

我有一个继承自这个类的 swift 类:

class SwiftScene: Scene {

    var screenSize = SMALL

    override func didMoveToView (view: SKView) {

        if screenSize == SMALL {
            //Do Something
        }
    }
}

这个 if 语句给了我错误:二元运算符 '==' 不能应用于两个 ScreenSize 运算符

我该怎么办?我应该使用枚举吗?

这是继承的问题吗?

【问题讨论】:

标签: objective-c swift sprite-kit


【解决方案1】:

你的代码应该是这样的:

class SwiftScene: Scene {

    var screenSize: Scene.ScreenSize = .SMALL

    override func didMoveToView (view: SKView) {

        if screenSize == .SMALL {/*Do Something*/}
    }
}

注意 screenSize 的类型声明和.SMALL 中使用它的两个地方的.。此外,您的 // 也注释掉了右括号。

【讨论】:

  • 现在它说 ScreenSize 不是 Scene 的成员
  • 哦,我刚才注意到你的Scene 类是一个Obj-C 接口。现在我不确定 swift 编译器在这种情况下能否正确解释 Scene.ScreenSize
  • 改用 var screenSize: ScreenSize = .SMALL
  • 是的,如果我将枚举放在 swift 类中,你建议的一切都可以正常工作
  • 如果枚举是快速枚举,则句点是必需的。由于您在 Obj-C 文件中声明了它,因此这不是句号给您错误的原因。我认为此时您最好的选择是阅读documentation on how to inter-operate with Obj-C
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
相关资源
最近更新 更多