参数类型为"XXXX"的初始值设定项调用无效


enum Seat: String{
case middle
case aisle
case window
case undefined
}
let s : Seat = Seat(rawValue: Seat.middle)

这样做给了我

错误:与参数类型相同的初始值设定项调用无效

这似乎是一个简单的错误。我在网上搜索,但什么也没找到。

错误非常明显。

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来创建此错误。但是由于更改是在与定义枚举的文件不同的文件中进行的......我一头雾水。

最新更新