Changes own keys without using a temporary dictionary;)
var dict = ["HEJ":"DÅ", "NeJ":"tack"] for key in dict.keys { dict[key.lowercaseString] = dict.removeValueForKey(key) } print(dict)
[hej: DÅ, nej: tack]
EDIT
I made this extension, its a little dirty, but I will update it again.
extension Dictionary { mutating func lowercaseKeys() { for key in self.keys { let str = (key as! String).lowercaseString self[str as! Key] = self.removeValueForKey(key) } } } var dict = ["HeJ":"Då", "nEJ":"taCK!"] dict.lowercaseKeys() print(dict)
["hej": "Då", "nej": "taCK!" ]
EDIT 2
extension Dictionary where Key: StringLiteralConvertible { mutating func lowercaseKeys() { for key in self.keys { self[String(key).lowercaseString as! Key] = self.removeValueForKey(key) } } } var dict = ["NamE":"David", "LAST_NAME":"Göransson"] dict.lowercaseKeys()
source share