SwiftUI中如何在ForEach内基于车型筛选API返回数据
解决Car模型数据的筛选问题
问题分析
现有实现存在两个核心问题:
searchResults仅支持精确匹配,且错误处理了searchText的非空情况(searchText作为@State变量本身不会为nil)- 年份筛选逻辑放在
ForEach循环内部,每个列表项都会重复执行判断,降低代码效率
优化方案
修改searchResults计算属性,实现忽略大小写的模糊匹配,并将年份筛选整合到统一的过滤逻辑中,一次性完成所有条件判断:
var searchResults: [Car] { let lowercasedSearch = searchText.lowercased() return users.users.filter { car in // 处理model可能为nil的情况,同时执行模糊匹配 (car.model?.lowercased().contains(lowercasedSearch) ?? false) // 整合年份筛选条件 && car.year >= 2017 } }
额外优化
移除ForEach循环内部的年份判断逻辑,所有筛选逻辑统一在searchResults中处理,避免重复计算,提升代码运行效率。
内容的提问来源于stack exchange,提问作者DevAcc
相关产品推荐
相关产品推荐

