Swift中如何从Codable解码得到的数组中筛选符合指定条件的元素
实现方法
你已经通过解析得到了GroceryProduct类型的groceryPro实例,其data属性就是存储700个Data1元素的数组,直接使用Swift标准库的filter高阶函数即可完成筛选,具体实现如下:
基础简洁版
直接利用可选值的等式判断逻辑,system_name为nil时会自动返回false,自动排除无system_name的元素:
// 取到所有原始元素数组 let allDataList = groceryPro.data // 筛选system_name等于"Esc"的所有元素 let filteredList = allDataList.filter { $0.system_name == "Esc" }
严谨安全版
如果需要明确排除system_name为nil的情况,避免隐式可选比较的潜在问题,可以用可选绑定显式处理:
let filteredList = allDataList.filter { item in // 先解包system_name,无值则直接排除该元素 guard let validSystemName = item.system_name else { return false } // 解包成功后再匹配字符串 return validSystemName == "Esc" }
筛选结果使用示例
筛选后得到的filteredList就是符合条件的[Data1]类型数组,可以直接遍历使用:
for element in filteredList { print("匹配元素id: \(element.id ?? "无"), 名称: \(element.name ?? "无")") }
内容的提问来源于stack exchange,提问作者Anton Alymov
相关产品推荐
相关产品推荐

