我有一個 forEach 陳述句,它通過包含膳食條目的結構來文盲。如果結構為空,我想顯示替代文本。
我的問題是當陣列為空時,編譯時收到以下錯誤
無法將“String”型別的值轉換為預期的引數型別“Meal”
let mealEntrysDinner: [String] = [
]
Section(header:Text("Dinner")){
ForEach(mealEntrysDinner, id: \.self){ meal in
if(mealEntrysDinner.isEmpty == true){
Text("Arr Empty")
}
else{
EntryRow(meal:meal)
}
}
}
膳食結構如下:
struct Meal: Identifiable, Hashable{
var id = UUID()
var mealName: String
var calories: String
var quantity: Int
var amount: String
var protein: String
}
入口行
struct EntryRow: View {
var meal: Meal
var body: some View {
HStack{
VStack(alignment: .leading){
Text(meal.mealName)
Text(meal.amount)
.font(.subheadline)
.foregroundColor(.gray)
}
Spacer()
Text(meal.calories)
}
}
}
uj5u.com熱心網友回復:
有兩個問題。
首先,看起來你想mealEntrysDinner成為[Meal],而不是[String]——否則,正如你所發現的,型別不匹配,你不能使用EntryRow.
其次,您的子句有問題——if它應該在ForEach:
Section(header:Text("Dinner")){
if mealEntrysDinner.isEmpty {
Text("Arr Empty")
} else {
ForEach(mealEntrysDinner) { meal in
EntryRow(meal:meal)
}
}
}
這樣,ForEach只有在mealEntrysDinner有元素時才會顯示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/427951.html
上一篇:關于委托和視圖控制器的簡單問題
