下面的枚举可以正常工作,没有任何错误。
enum EnumOptions: CaseIterable {
case none
case mild
case moderate
case severe
case unmeasurable
}
当我尝试向其中一个事例添加关联值时,它抛出以下错误“类型”EnumOptions“不符合协议”CaseIterable“。是否要添加协议存根?”
enum OedemaOptions: CaseIterable {
case none
case mild
case moderate
case severe
case unmeasurable(Int)
}
添加存根之后,
enum OedemaOptions: CaseIterable {
typealias AllCases = <#type#>
case none
case mild
case moderate
case severe
case unmeasurable(Int)
由于只有一个案例具有关联值,而不是所有案例,因此应在占位符中填充什么以使枚举符合CaseIterable?
3条答案
按热度按时间4uqofj5v1#
自动合成不适用于具有关联值的枚举。您需要提供allCases属性的自定义实现。请尝试,
9bfwbjaz2#
你忘了计算所有的18446744073709551616
此外,每个都是
Option
,而不是Options
。o7jaxewo3#
编译器不支持 CaseIterable 在具有关联值的情况下的自动合成。
这是 CaseIterable 的替代解决方案
示例
将该概念扩展到RawRepresentable
示例