我想做这样的事情...
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"
}
}
}
...其中 DroidSpriteFramesIdle
和 DroidSpriteFramesMove
是 SpriteFrames
的子类,或者将其作为协议(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/