ios - Swift - 枚举的子类(或类似的东西)

标签 ios swift enums protocols subclass

我想做这样的事情...

enum SpriteFrames:Int {

    case N
    case NE
    case E
    case SE
    case S
    case SW
    case W
    case NW
}

enum DroidSpriteFramesIdle:Int {

    var image:String {
        switch self {
        case N:
            return "droid_n"
        case NE:
            return "droid_ne"
        case E:
            return "droid_e"
        case SE:
            return "droid_se"
        case S:
            return "droid_s"
        case SW:
            return "droid_sw"
        case W:
            return "droid_w"
        case NW:
            return "droid_nw"
        }
    }

}
enum DroidSpriteFramesMove:Int {

    var image:String {
        switch self {
        case N:
            return "droid_move_n"
        case NE:
            return "droid_move_ne"
        case E:
            return "droid_move_e"
        case SE:
            return "droid_move_se"
        case S:
            return "droid_move_s"
        case SW:
            return "droid_move_sw"
        case W:
            return "droid_move_w"
        case NW:
            return "droid_move_nw"
        }
    }

}

...其中 DroidSpriteFramesIdleDroidSpriteFramesMoveSpriteFrames 的子类,或者将其作为协议(protocol)或类似的协议(protocol)来遵守。基本上,我想要有很多枚举,它们都具有相同的方向案例列表(N、NE、E 等),但对于这些常见方向有自己的唯一值列表。我不想使用类,因为这会导致在分配时创建实例。尽管我对其他想法持开放态度,但我对 Swift 还很陌生。谢谢。

最佳答案

您可以为该枚举创建一个别名,它可以充当子类

例如 Apple 的默认设置:

public enum UITextFieldViewMode : Int {

    case Never
    case WhileEditing
    case UnlessEditing
    case Always
}

前别名:

public typealias AutoCompleteButtonViewMode = UITextFieldViewMode

你的功能:

func showButtonWithViewMode(buttonViewMode: AutoCompleteButtonViewMode) {

    // Code here
}

用法:

showButtonWithViewMode(.WhileEditing)

关于ios - Swift - 枚举的子类(或类似的东西),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28428355/

相关文章:

ios - MPNowPlayingInfoCenter 适用于模拟器,但不适用于设备

ios - SwiftUI:将多个 BindableObjects 放入环境

swift - 非标称类型 "Self"不支持显式初始化(​​枚举的协议(protocol)扩展)

ios - 将 cordova 文件插件添加到现有 ios 项目时重复符号 _kCDVFilesystemURLPrefix

ios - 使用 UserDefault 时电子邮件主题显示为 nil

ios - 仅显示一次演练场景 ios swift

html - Swift HTML 解码问题

swift - 我在哪里可以找到 Swift 附带的所有全局函数的列表?

javascript - Angular/javascript 中的 int 到标志枚举

java - 如何让 "Enum.CONSTANT"返回某种类型(例如颜色)?