작성
·
157
0
@State private var startDate = Date() // 데이트피커로 변경가능
@State private var dDay: String = "100" //텍스트필드에서 숫자 변경가능
@State private var howManyDays: Int = Int(dDay) ?? 0 // 위 dDay를 Int로 형변환
var endDate = Calendar.current.date(byAdding: .day, value: howManyDays, to: startDate)
스타트데이트 기준으로 몇일 뒤 예를 들어 100일 뒤를 계산해서 몇월 몇일인지 보여주는 아주 간단한 것을 연습하고 있는데 잘 안되네요...
답변 1
1
안녕하세요
endDate같은건 다른값에 의해서 값이 결정되는 property입니다.
이런건 get, set부분을 직접 만들어야 합니다.
아래와 같은 스타일로 get부분에 어떻게 값이 표현될지 로직을 추가하면 될 것 같습니다.
set 부분은 set할게 없으니 빈 로직으로 남겨두고요.
스타일을 차근차근 보시면 어렵지 않게 이해할 수 있을 것 같습니다.
struct ContentView: View {
@State private var startDate = Date() // 데이트피커로 변경가능
@State private var dDay: String = "5" //텍스트필드에서 숫자 변경가능
var body: some View {
let endDate = Binding<Date?> (
get: { Calendar.current.date(byAdding: .day, value: Int(dDay) ?? 0, to: startDate) },
set: { _ in }
)
VStack{
Text($startDate.wrappedValue.description)
Text(endDate.wrappedValue?.description ?? "")
}
}
}