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

Swift 3中如何移除模型数组内ID匹配指定值的元素?

解决方法:修正Filter条件并安全更新模型

看起来你是把filter的判断逻辑搞反啦!我们需要保留ID不等于customFlashId和customLikeId的元素,而不是筛选出等于它们的——后者会留下你要删除的元素,刚好和需求相反。

下面是完整的解决方案,我会考虑Swift中可选值的安全处理,避免空值崩溃:

// 先确保模型和数组都不为空,做安全处理
guard let originalData = self.categoriesModel?.childrenData else {
    // 如果childrenData为空,直接返回或者执行你需要的兜底逻辑
    return
}

// 定义要移除的ID集合,方便后续扩展(以后加更多ID直接追加即可)
let excludedIds = [customFlashId, customLikeId] // 对应值46和47

// 过滤出不在排除列表中的元素,赋值回模型
self.categoriesModel?.childrenData = originalData.filter { !excludedIds.contains($0.id) }

逻辑拆解:

  • 用guard let安全解包childrenData,避免强制解包引发的崩溃问题;
  • 将需要移除的ID存入数组,通过contains判断元素ID是否在排除列表中,前面加!取反,就能得到需要保留的元素;
  • 最后把过滤后的数组重新赋值给categoriesModel?.childrenData,完成模型更新。

如果不需要考虑后续扩展,也可以直接写判断条件:

self.categoriesModel?.childrenData = originalData.filter {
    $0.id != customFlashId && $0.id != customLikeId
}

两种方式都能实现需求,用集合的写法更适合未来需要添加更多排除ID的场景,维护起来更省心。

内容的提问来源于stack exchange,提问作者User

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:31:33