[SwiftUI]:ForEach 不适用于字典数组、带数组的字典
[SwiftUI]: ForEach is not working for array of dictionary, dictionary with array
我尝试在 SwiftUI 中遍历数组,但效果不佳。
我的代码:
let arr_type2 = [
["type":"Temperature","Units":["°C","°F","°K"]],
["type":"Length","Units":["m","km","ft","yd","mi"]],
["type":"Time","Units":["sec","min","hr","day"]],
["type":"Volume","Units":["ml","lt","cups","pints","gallons"]]
]
ForEach(arr_type2, id: \.self) { dict in //Error
Text("")
}
错误:协议类型 'Any' 无法符合 'Hashable' 因为只有具体类型才能符合协议
我刚开始学SwiftUI,能帮我保存一下吗?
感谢您抽出宝贵时间!
你可以用
写的很干净
struct Model:Hashable {
let type:String
let unnits:[String]
}
struct ContentView: View {
let arr_type2 = [Model(type:"Temperature", unnits: ["°C","°F","°K"])]
var body: some View {
ForEach(arr_type2, id: \.self) { item in
Text(item.type)
}
}
}
为什么检查https://www.hackingwithswift.com/books/ios-swiftui/why-does-self-work-for-foreach
你可以这样使用 ForEach
var body: some View {
let arr_type2 = [
["type":"Temperature","Units":["°C","°F","°K"]],
["type":"Length","Units":["m","km","ft","yd","mi"]],
["type":"Time","Units":["sec","min","hr","day"]],
["type":"Volume","Units":["ml","lt","cups","pints","gallons"]]
]
return ForEach(0..<arr_type2.count, id: \.self) { index -> AnyView in
let units = arr_type2[index]["Units"] as! [String]
return AnyView(VStack {
Text(arr_type2[index]["type"] as! String)
ForEach(0..<units.count, id: \.self) { indexUnits in
Text(units[indexUnits])
}
})
}
}
我尝试在 SwiftUI 中遍历数组,但效果不佳。
我的代码:
let arr_type2 = [
["type":"Temperature","Units":["°C","°F","°K"]],
["type":"Length","Units":["m","km","ft","yd","mi"]],
["type":"Time","Units":["sec","min","hr","day"]],
["type":"Volume","Units":["ml","lt","cups","pints","gallons"]]
]
ForEach(arr_type2, id: \.self) { dict in //Error
Text("")
}
错误:协议类型 'Any' 无法符合 'Hashable' 因为只有具体类型才能符合协议
我刚开始学SwiftUI,能帮我保存一下吗?
感谢您抽出宝贵时间!
你可以用
写的很干净struct Model:Hashable {
let type:String
let unnits:[String]
}
struct ContentView: View {
let arr_type2 = [Model(type:"Temperature", unnits: ["°C","°F","°K"])]
var body: some View {
ForEach(arr_type2, id: \.self) { item in
Text(item.type)
}
}
}
为什么检查https://www.hackingwithswift.com/books/ios-swiftui/why-does-self-work-for-foreach
你可以这样使用 ForEach
var body: some View {
let arr_type2 = [
["type":"Temperature","Units":["°C","°F","°K"]],
["type":"Length","Units":["m","km","ft","yd","mi"]],
["type":"Time","Units":["sec","min","hr","day"]],
["type":"Volume","Units":["ml","lt","cups","pints","gallons"]]
]
return ForEach(0..<arr_type2.count, id: \.self) { index -> AnyView in
let units = arr_type2[index]["Units"] as! [String]
return AnyView(VStack {
Text(arr_type2[index]["type"] as! String)
ForEach(0..<units.count, id: \.self) { indexUnits in
Text(units[indexUnits])
}
})
}
}