2016-02-04 101 views
0

我有一本字典,它看起来像这样:如何添加新的价值字典[字符串:字符串]]

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

你的“字典”实际上是字典的数组,所以你需要遍历数组,检索中的每个元素的字典,然后只需添加新的关键和价值的字典 – Paulw11

+1

@MikeVelazco错误的语言 –

+0

你怎么知道什么水平分配? – Cristik

回答

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) 
     } 
    } 
} 
+0

'因为我在0 ... anArray.count-1'太难看了...'因为我在0 .. Hamish

+0

是的。我仍然在为此努力。我并不真正写Swift。 – Paulw11

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键仅用于UI目的,那么最好写一个Dictionary扩展名,因为没有意义存储冗余值:

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

它可以这样使用:

dictArray[0].level() 
相关问题