如何从Swift字典中删除键值对?

112

我想从字典中删除一个键值对,就像例子中一样。

var dict: Dictionary<String,String> = [:]
//Assuming dictionary is added some data.
var willRemoveKey = "SomeKey"
dict.removePair(willRemoveKey) //that's what I need
5个回答

211

你可以使用这个:

dict[willRemoveKey] = nil

或者这样:

dict.removeValueForKey(willRemoveKey)

唯一的区别是第二个将返回已删除的值(如果它存在)或者 nil(如果它不存在)

Swift 3

dict.removeValue(forKey: willRemoveKey)

3
现在应该将其称为 dict.removeValue(willRemoveKey),因为看起来 .removeValueForKey 已经被重命名了 - 感谢您的帮助! - Coty Embry
非常漂亮干净,太喜欢了! - dustinrwh
4
如果您的值是可选的,那么下标语法怎么能工作呢? - WiseOldDuck
12
有没有其他人注意到文档中说这是O(n)的,其中n是字典的大小?! - Andrew
3
将下标赋值为 nil 将总是删除该键。要在可选值类型的字典中分配真正的 nil 值,请分配 .some(nil) - BallpointBen

37

Swift 5, Swift 4Swift 3:

x.removeValue(forKey: "MyUndesiredKey")

祝好!


12
dict.removeValue(forKey: willRemoveKey)
您可以使用下标语法:
dict[willRemoveKey] = nil

4
var dict: [String: Any] = ["device": "iPhone", "os": "12.0", "model": "iPhone 12 Pro Max"]

if let index = dict.index(forKey: "device") {
   dict.remove(at: index)
}

print(dict) // ["os": "12.0", "model": "iPhone 12 Pro Max"]

-1
let dict = ["k1": "v1" , "k2": "v2"]
  for ( k, _) in dict{
        dict.removeValue(forKey: k)
       }
  • 只需循环遍历并删除键的值
  • 对于给定的键,使用 removeValue(forKey: k) 删除值

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接