手动为字典赋值和使用updateValue函数之间有什么区别?

时间:2015-03-22 04:03:49

标签: ios swift dictionary

我目前正在学习swift,我想知道为字典分配值和使用updateValue函数之间的区别。它们都会更改或添加一个字典,其中包含您输入的名称以及您传递给该名称的值。

var states = [ "La" : "Las Vegas", "Ca" : "California", "We" : "Whatever" ]

//manually assigning/changing a value
states["La"] = "Ive changed"
println(states["La"])

//using the updateValue function
states.updateValue("Ive changed again", forKey: "La")
println(states["La"])

他们都给了我相同的结果,问题是我是否正确思考,我只是想知道我是否应该使用第一个或第二个选项以及何时。

1 个答案:

答案 0 :(得分:2)

只有一个区别,当您使用updateValue更新字典时,它会更新/插入值并返回存储在密钥中的先前值。 (如果该密钥不存在则返回nil)

你可以使用它:

if let unwrappedPreviousValue = dictionary.updateValue("Midhun", forKey: "La")
{
    println("Previous value: \(unwrappedPreviousValue)")
}

根据Swift Standard Library Reference

  

<强> updateValue(_:forKey:)

     

插入或更新给定键的值并返回之前的值   该密钥的值(如果存在),或者如果之前的值不存在则为零   存在。

     

<强>声明

     

mutating func updateValue(value: Value, forKey key: Key) -> Value?

     

<强>讨论

     

使用此方法插入或更新给定键的值,作为   下标的替代方案。此方法返回type的值   值? - 一个可选的字典值的基础类型