在词典字典中设置单个元素

时间:2016-03-02 13:59:54

标签: swift dictionary

我对词典词典有疑问。将单个元素放入Dict中的方法是否比我更短?

var cellHeight = [ Int : [ Int : CGFloat ] ]()

// ...

if let _ = cellHeight[0] {
    cellHeight[0]![2] = 0.0
} else {
    cellHeight[0] = [ 2 : 0.0 ]
}

在我检查过的所有教程中,只解释了如何填写/初始化完整的dict-of-dict而不是从中读取,但不是如何逐个填写它。

2 个答案:

答案 0 :(得分:2)

只需添加元素即可。如果尚未存在字典条目,则向该键添加元素将创建一个元素。如果密钥已存在,则添加元素将覆盖旧元素。从不存在的字典键读取将返回nil。从字典中读取会返回一个可选项。 enter image description here

答案 1 :(得分:1)

你做的事情基本上是正确的。你可以稍微优雅一点:

let didit = cellHeight[0]?[2] = 0 // yields an Optional<Void>
if didit == nil { // that didn't work, so create the entry
    cellHeight[0] = [2:0]
}

这可以进一步收紧,没有额外的变量:

if nil == (cellHeight[0]?[2] = 0) {
    cellHeight[0] = [2:0]
}

如果这是代码中的重复模式,您当然可以将其抽象为函数。