Gre*_*reg 4 swift swift-dictionary swiftui
我如何纠正此代码以防止构建失败?基本上想要使用 ForEach 迭代基于 [ customEnum : customStrut ] 的字典。
否则,如果这是有问题的,是否有其他方法来实现 SwiftUI 支持?
错误
在“ForEach”上引用初始化程序“init(_:id:content:)”要求“[GCFilterViewOptions.FilterOptions : GCFilterViewOptions.FilterOptionValues]”符合“RandomAccessCollection”
类型 '(key: GCFilterViewOptions.FilterOptions, value: GCFilterViewOptions.FilterOptionValues)' 不能符合 'Hashable';只有 struct/enum/class 类型可以符合协议
代码
import SwiftUI
struct GCFilterViewOptions: View {
enum FilterOptions {
case NewLine
case Comma
case Space
}
struct FilterOptionValues {
var title : String
var selected : Bool
}
var filterSelections : [FilterOptions : FilterOptionValues] = [
FilterOptions.NewLine : FilterOptionValues(title: "New Line", selected: true),
FilterOptions.Comma : FilterOptionValues(title: "Comma", selected: true),
FilterOptions.Space : FilterOptionValues(title: "Space", selected: false)
]
var body : some View {
HStack {
ForEach(filterSelections, id:\.self) { filterOption in. // ** ERRORS HERE **
Text("TBD")
// Will be putting checkboxes here - i.e. so can chose which ones
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于 states 字典不是“随机访问”能力的集合,因此它不能直接在 ForEach 中使用,这是可能的方法
HStack {
ForEach(Array(filterSelections.keys.enumerated()), id:\.element) { _, key in
Text("TBD \(self.filterSelections[key]?.title ?? "")")
// Will be putting checkboxes here - i.e. so can chose which ones
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9813 次 |
| 最近记录: |