如何向字典[[String:String]]添加新值

时间:2016-02-04 19:48:17

标签: arrays swift

我有一本字典,如下所示:

var dict = [["number" : "1" ], ["number" : "2" ], ["number" : "3" ]]

现在我想为我的字典中的每个索引添加新值"level" : "(number of level)",它应该是这样的:

var dict = [["number" : "1", "level" : "one"], ["number" : "2", "level" : "two" ], ["number" : "3", "level" : "three" ]]

在这种情况下,如何在现有字典中添加一些值?

2 个答案:

答案 0 :(得分:3)

您列为字典的实际上是一系列字典。您只需迭代数组即可为每个目录添加元素。

您可以使用NSNumberFormatter将您拥有的数字转换为等效的字词:

var anArray=[["number":"1"],["number":"2"],["number":"3"]]

let numberFormatter=NSNumberFormatter()

numberFormatter.numberStyle=NSNumberFormatterStyle.SpellOutStyle

for i in 0..<anArray.count {
    if let numberString=anArray[i]["number"] {
        if let number=Int(numberString) {
            anArray[i]["level"]=numberFormatter.stringFromNumber(number)
        }
    }
}

答案 1 :(得分:1)

正如Paulw11指出的那样,您可以使用NSNumberFormatter将数字转换为单词:

let dictArray = [["number" : "1" ], ["number" : "2" ], ["number" : "3" ]]
let numberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = NSNumberFormatterStyle.SpellOutStyle
let mappedDictArray = dictArray.map { var d = $0; d["level"] = numberFormatter.stringFromNumber(number); return d; }

但是,如果您有兴趣仅将level密钥用于用户界面,那么您最好写一个Dictionary分机,因为没有必要存储冗余值:

extension Dictionary {
    func levelString() -> String {
        let numberFormatter = NSNumberFormatter()
        numberFormatter.numberStyle = NSNumberFormatterStyle.SpellOutStyle
        return numberFormatter.stringFromNumber(self["number"] as? Int ?? 0)
    }
}

可以这样使用:

dictArray[0].level()