我正在制作一个应用程序,我想在其中多次过滤一组锻炼数据。
我曾经通过 UIKit 中的 filter、map、for 循环来完成它,但在 SwiftUI 中没有运气。
List {
if workoutsModel.workoutsAreFiltered {
ForEach(workoutsModel.workoutsFilter) { workoutFilter in
if workoutFilter.isOn {
ForEach(self.workoutsModel.workout) { workout in
if workoutFilter.name == workout.goal || workout.muscles.contains(workoutFilter.name) {
WorkoutsRow(workout: workout)
}
}
}
}
} else {
ForEach(self.workoutsModel.workout) { workout in
WorkoutsRow(workout: workout)
}
}
}
Run Code Online (Sandbox Code Playgroud)
您必须在可以执行任意代码的位置(例如在传递给 的值中ForEach)进行过滤,而不是在 的实际主体内ForEach,因为它不会返回Void。
例如
List {
if workoutsModel.workoutsAreFiltered {
ForEach(workoutsModel.workoutsFilter) { workoutFilter in
// Not sure if the `if workoutFilter.isOn` is allowed, so I've instead used it to only iterate an empty array
ForEach(!workoutFilter.isOn ? [] : self.workoutsModel.workout.filter { workout in
workoutFilter.name == workout.goal ||
workout.muscles.contains(workoutFilter.name)
}) { workout in
WorkoutsRow(workout: workout)
}
}
} else {
ForEach(self.workoutsModel.workout) { workout in
WorkoutsRow(workout: workout)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |