枚举中的类型转换在 Swift 中不起作用

Typecasting in enumeration not working in Swift

enum CardPosition: CGFloat {
    case top = UIScreen.main.bounds.height //This line has the error "Raw value for enum case must be a literal"
    case middle = 500
    case bottom = 590
}

在最常见的情况下,我猜它不是 return CGFloat,但出于某种原因,使用“as”关键字也不能将其类型转换为 CGFloat,我不知道为什么。知道怎么做吗?

这是一个枚举,其原始值为 CGFloat。

top 案例的问题在于只有 文字数字 作为原始值是合法的。您不能分配像 UIScreen.main.bounds.height 这样的变量。你必须当场写出一个实际数字。

从长远来看,您在这里想要的可能不是枚举,或者可能不是采用原始值的枚举。例如,您可以拥有一个具有 关联 值的枚举:

enum CardPosition {
    case top(CGFloat)
    case middle(CGFloat)
    case bottom(CGFloat)
}

现在您可以在初始化时附加值:

let myPosition = CardPosition.top(UIScreen.main.bounds.height)
let myOtherPosition = CardPosition.middle(500)

请注意,您不能混搭;如果我们要使用关联值,则此枚举不能具有固定的原始值。