swift - 具有相同类型 'XXXX' 作为参数的无效初始化程序调用

标签 swift enums

enum Seat: String{
    case middle
    case aisle
    case window
    case undefined
}

let s : Seat = Seat(rawValue: Seat.middle)

这样做给了我

error: invalid initializer call with same type 'Seat' as parameter

这似乎是一个简单的错误。我在网上搜索但没有找到任何东西。

最佳答案

错误很明显。

rawValue 参数需要一个 String。但是你给它的是枚举类型本身。

你应该这样做:

let s: Seat = .middle
let s = Seat(rawValue: "middle") ?? .undefined
let s = Seat(rawValue: "middle")! // Perhaps this is better, per Alexander's comment

或仅用于演示目的:

let s = Seat(rawValue: Seat.middle.rawValue) ?? .undefined

我通过将 s 属性的类型从 String 更改为 Seat 造成了这个错误。但是由于更改是在与定义枚举的文件不同的文件中进行的……我感到困惑。

关于swift - 具有相同类型 'XXXX' 作为参数的无效初始化程序调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50241435/

相关文章:

ios - 为什么观点没有改变? Xcode/swift 2

使用枚举的 Swift 协议(protocol)扩展

enums - 在 Idris 中,如何将 1 添加到 Fin 直到达到 "max"

ios - 异步查询后 UITableViewController 消失

ios - 核心图像过滤器的输出图像第二次在 UIImage 上运行时为零

ios - GMSAutocompleteViewController iOS,如何在 searchControllers 中获得不同颜色的文本?

swift - UITabBarItems 在子类化 UITabBarController 后不显示

ios - 处理硬编码列表/选项/下拉列表等的合法方法

c# - 从 2 个派生类中选择正确的枚举列表

C++ 使用声明与枚举 : how to import all the enum items?