2016-02-04 99 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() 
相關問題