【发布时间】:2020-11-15 09:09:19
【问题描述】:
我只是想在 ForEach 循环中计算符合“if”语句的事件数,但出现以下错误。
我尝试了几种变体来完成任务,但每种变体都导致了一些描述错误。我要补充一点,我是一个苦苦挣扎的新手!
类型'()'不能符合'View';只有结构/枚举/类类型可以符合协议
我现在正在使用的代码。
import Foundation
import SwiftUI
import EventKit
class Summary: ObservableObject {
@Published var walkCount:Int = 0
@Published var dayCareCount:Int = 0
@Published var shortStayCount:Int = 0
@Published var longStayCount:Int = 0
@Published var dropInCount:Int = 0
}
struct SummaryView: View {
@ObservedObject var eventsRepository = EventsRepository.shared
@ObservedObject var selectDate = datepicker()
var summary: Summary
enum BookingType {
case walk
case dayCare
case shortStay
case longStay
case dropIn
}
func countBooking(bookingType: BookingType) {
switch bookingType {
case .walk:
summary.walkCount += 1
case .dayCare:
summary.dayCareCount += 1
case .shortStay:
summary.shortStayCount += 1
case .longStay:
summary.longStayCount += 1
case .dropIn:
summary.dropInCount += 1
}
}
var body: some View {
GroupBox {
VStack{
//Walks
HStack{
ForEach(eventsRepository.events ?? [], id: \.self) { event in
if event.title.contains("Walk") {
countBooking(bookingType: .walk) // running function results in error
}
}
Text("Walks:\(summary.walkCount)")
}
}
}
}
}
【问题讨论】:
-
ForEach是一个视图容器,而不是一个控制流。在body之外的某个地方使用标准 swiftfor in。