ForEach 루프 내에서 "if"문에 맞는 이벤트 수를 계산하고 싶지만 다음 오류가 발생합니다.
나는 작업을 달성하기 위해 여러 가지 변형을 시도했지만 각각 일부 설명의 오류가 발생했습니다. 나는 고군분투하는 초보자라고 덧붙일 것이다!
'()'유형은 '보기'를 따를 수 없습니다. struct / enum / class 유형 만 프로토콜을 준수 할 수 있습니다.
지금 사용하고있는 코드입니다.
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
정의하기 View
위한 것입니다.
걷기 수를 계산하는 가장 쉬운 방법은 SummaryView 내부에서 계산 된 속성을 선언하는 것입니다 body
.
var walksCount: Int {
eventsRepository.events?
.filter { $0.title.contains("Walk") }
.count ?? 0
}
그런 다음 다음 body
과 같이 내부에서 사용할 수 있습니다 .
Text("Walks:\(walksCount)")
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다