我有这个字典数组。
let deckColors = [
["name": "blue", "desc": "desc1"],
["name": "yellow", "desc": "desc2"],
]
而我的观点:
struct ContentView: View {
var body: some View {
ForEach(0 ..< deckColors.count) {value in
Text(deckColors[value]["name"])
}
}
}
我怎样才能让它工作?当前出现此错误:协议(protocol)类型
Any
不符合 StringProtocol
因为只有具体类型才能符合协议(protocol)
最佳答案
这似乎是实现结构的一种非常复杂的方式:
struct DeckColor {
var name: String
var desc: String
}
let deckColors = [
DeckColor(name: "blue", desc: "desc1"),
DeckColor(name: "yellow", desc: "desc2")
]
struct ContentView: View {
var body: some View {
ForEach(0 ..< deckColors.count) { value in
Text(deckColors[value].name)
}
}
}
您实现它的方式需要处理字典不包含
"name"
的情况。值(value)。你可以这样做,但它更丑陋,更脆弱:struct ContentView: View {
var body: some View {
ForEach(0 ..< deckColors.count) { value in
Text(deckColors[value]["name"] ?? "default text if name isn't there.")
}
}
}
关于ios - 如何在 SwiftUI 中迭代/foreach 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60254412/