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

如何在Swift中从[[String:Any]]字典数组里根据name值删除指定元素

错误原因

你之前的代码报错是因为闭包里的$0是[String:Any]类型的字典,不能直接强转为String,需要先取出字典中key为name的取值,再做类型转换和对比。

正确实现(删除第一个匹配name的元素)

if let index = nameList.firstIndex(where: {
    guard let name = $0["name"] as? String else { return false }
    return name == "Kiran"
}) {
    nameList.remove(at: index)
}

也可以用简写形式:

if let index = nameList.firstIndex(where: { ($0["name"] as? String) == "Kiran" }) {
    nameList.remove(at: index)
}

批量删除所有匹配name的元素

如果需要删除数组中所有name为Kiran的元素,可以直接用filter方法过滤:

nameList = nameList.filter { ($0["name"] as? String) != "Kiran" }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:36:03