gpt4 book ai didi

swift - 如何在 SwiftUI 中过滤数组?

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:54 25 4
gpt4 key购买 nike

我正在制作一个应用程序,我想在其中多次过滤一组锻炼数据。

我曾经在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com