[英]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.