作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在制作一个应用程序,我想在其中多次过滤一组锻炼数据。
我曾经在 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)
}
}
}
最佳答案
您必须在可以执行任意代码的地方进行过滤(例如,在传递给 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)
}
}
}
关于swift - 如何在 SwiftUI 中过滤数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56926183/
我是一名优秀的程序员,十分优秀!