以下枚举工作正常,没有任何错误。
enum EnumOptions: CaseIterable {
case none
case mild
case moderate
case severe
case unmeasurable
}
Run Code Online (Sandbox Code Playgroud)
当我尝试向其中一种情况添加关联值时,它会引发以下错误“类型‘EnumOptions’不符合协议‘CaseIterable’。您要添加协议存根吗?”
enum OedemaOptions: CaseIterable {
case none
case mild
case moderate
case severe
case unmeasurable(Int)
}
Run Code Online (Sandbox Code Playgroud)
添加存根后,
enum OedemaOptions: CaseIterable {
typealias AllCases = <#type#>
case none
case mild
case moderate
case severe
case unmeasurable(Int)
Run Code Online (Sandbox Code Playgroud)
应该在占位符中填写什么以使 Enum 符合 CaseIterable,因为只有 1 个具有关联值的案例而不是所有案例?
Sub*_*pan 11
自动合成不适用于具有关联值的枚举。您需要提供 allCases 属性的自定义实现。尝试,
enum OedemaOptions: CaseIterable {
static var allCases: [OedemaOptions] {
return [.none, .mild, .moderate, .severe, .unmeasurable(-1)]
}
case none
case mild
case moderate
case severe
case unmeasurable(Int)
}
Run Code Online (Sandbox Code Playgroud)
小智 8
您忘记考虑所有 18,446,744,073,709,551,616 Ints。
另外,每个都是一个Option,而不是一个Options。
static var allCases: [OedemaOption] {
[.none, .mild, .moderate, .severe]
+ (.min...(.max)).map(unmeasurable)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1983 次 |
| 最近记录: |