【发布时间】:2020-03-05 07:53:19
【问题描述】:
我有两个符合一个协议的枚举,一个包含这些枚举数组的可观察对象和一个我想接受这两个枚举的视图。
可观察对象:
class OptionsStore: ObservableObject {
@Published var topicOptions: [TopicOption]
@Published var levelOptions: [LevelOption]
}
枚举和协议之一:
enum TopicOption: String, CaseIterable, OptionCompatible {
case music, food, traffic
...
}
protocol OptionCompatible {
...
}
意见:
struct MainView: View {
@EnvironmentObject var optionsStore: OptionsStore
var body: some View {
OptionsView(
options: TopicOption.allCases, // no error
activeOptions: self.$optionsStore.topicOptions // error
)
}
}
struct OptionsView: View {
let options: [OptionCompatible]
@Binding var activeOptions: [OptionCompatible]
}
错误是
无法将“Binding”类型的值转换为预期的参数类型“Binding”
我想要的是OptionsView 接受两个枚举。为什么调用静态allCases 会很顺利,但当我传递这些枚举的数组时却不行?我该如何解决这个问题?
【问题讨论】: