【发布时间】:2020-06-03 13:03:45
【问题描述】:
如何在 SwiftUI 的 if 语句中使用关联的枚举作为 @State 变量?
struct ProfileView: View {
@State private var choice = Choice.simple
private enum Choice {
case simple
case associated(Int)
}
var body: some View {
if choice == .simple {
Text("Simple")
}
}
}
编译器报这个错误:
协议“Equatable”要求“ProfileView.Choice”符合“Equatable”
【问题讨论】:
-
根本问题出在我的生产代码中,我使用的是结构体(与重现中的 Int 相比),而结构体没有实现
Equatable。然后在简化的重现中,我没有确保总是有一个根视图,这恰好给出了同样的错误。这让我认为问题与@State的实现方式有关。
标签: swift enums swiftui associated-value