如何在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
相关产品推荐
相关产品推荐

