You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何在ForEach内基于车型筛选API返回数据

解决Car模型数据的筛选问题

问题分析

现有实现存在两个核心问题:

  1. searchResults仅支持精确匹配,且错误处理了searchText的非空情况(searchText作为@State变量本身不会为nil)
  2. 年份筛选逻辑放在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:40:25