【发布时间】:2021-12-18 07:14:58
【问题描述】:
我已经计算出属性timeShown
我收到警告“在视图更新期间修改状态,这将导致未定义的行为。”
为
if manager.selectedDateByIndex != 0 {
startIndex = 6
endIndex = 30
} else {
startIndex = hour
endIndex = 24
}
这里有完整的代码
var timeIndex: Int
let currentDate = Date()
let calendar = Calendar.current
@Binding var startIndex: Int
@Binding var endIndex: Int
@EnvironmentObject var manager: BookingManager
var timeShown: String {
let hourComponent = calendar.dateComponents([.hour], from: currentDate)
let hour = hourComponent.hour!
if manager.selectedDateByIndex != 0 {
startIndex = 6
endIndex = 30
} else {
startIndex = hour
endIndex = 24
}
if timeIndex < 10 {
return "0\(timeIndex):00"
} else if timeIndex > 23 {
return "0\(timeIndex % 6):00"
}
else {
return "\(timeIndex):00"
}
}
【问题讨论】:
-
您应该创建一个minimal reproducible example,因为您甚至没有显示视图代码。但是,我怀疑您在正文中使用
timeShown,因此您也尝试在正文中设置@State属性。这会创建一个无限循环,因为设置@State会触发另一个视图更新。
标签: ios swift swiftui computed-properties