我有一本字典,如下所示:
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" ]]
在这种情况下,如何在现有字典中添加一些值?
答案 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()