【发布时间】:2020-10-09 19:54:45
【问题描述】:
这可能是一个愚蠢的问题,但我试图允许所有字符串枚举作为 Struct 中变量的类型。下面的代码是完全错误的,但我希望它能让我的问题更清楚。
我的想法是让所有枚举都遵循相同的协议,但我无法使用这种方法访问 .allCases。
我的目标是我可以将任何字符串枚举传递给 ListView,然后它将显示枚举的所有组件(这里:一;二;三)。
有人知道怎么做吗?它一定是一个非常基本的 Swift 东西,但我无法通过网络搜索找到它。非常感谢!
import SwiftUI
struct ContentView: View {
var body: some View {
ListView(myEnum: Elements.self) //error here as well
}
}
protocol StringRepresentable {
var rawValue: String { get }
}
enum Elements: String, Equatable, CaseIterable, StringRepresentable {
case one
case two
case three
}
struct ListView: View {
let myEnum: StringRepresentable //doesn't work
var body: some View {
ForEach(myEnum.allCases, id: \.self) { elem in //can't access .allCases
Text(elem.rawValue)
}
}
}
【问题讨论】: