[英]How do I use a counter within body View to fill a list
我是 Swift 的新手,尝试通过尝试新事物来感受它。 现在我被列表困住了。 我有两个arrays,一个是产品,另一个是每个产品的价格。 我想使用 ForEach 循环来填充列表。 我使用 HStack 有两列。
为了更清楚一点,这里有两个 arrays:
@state private var products = ["Coke", "Fanta", "Sprite", "Water]
private var prices = ["1,43$", "1,22$", "1,64$", "0,45$"]
现在这是我的 ContentView.swift 的一部分:
var body: some View {
List{
ForEach(products, id: \.self) { product in
HStack{
Text(product)
Spacer()
Text(price[products.firstIndex(of: product)])
}
}
}
所以我的计划是,通过遍历产品数组,用产品名称填充每个单元格。 然后我要显示相应的价格。 为此,我使用我的第二个文本并用价格填充它。 为了找到价格数组的正确索引,我从我的产品数组中获取索引,因为它们是相似的。
那是我的解决方案,但现在我收到products.firstIndex(of: product)
的错误。
我收到以下错误:
可选类型“Array.Index?”的值? (又名“可选”)必须展开为“Array.Index”类型的值(又名“Int”)
我真的不明白这个错误试图告诉我什么。
有人可以帮忙吗?
正确的代码如下所示:
struct ContentView: View {
private var products = ["Coke", "Fanta", "Sprite", "Water"]
private var prices = ["1,43$", "1,22$", "1,64$", "0,45$"]
var body: some View {
List{
ForEach(products, id: \.self) { product in
HStack{
Text(product)
Spacer()
Text(self.prices[self.products.firstIndex(of: product)!])
}
}
}
}
}
错误的原因是数组在某个时候可能为空,如果您在那一刻尝试读取 firstIndex 会导致崩溃。
现在你有两个选择:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.