In Swift:
func adjustNextLayer(inDictionary dictionary: inout [String:Any], for key: String) {
if let newString = myDictionary[key] as? String {
myDictionary[key] = "\(newString) insert some text to append here"
} else {
If let newDictionary = myDictionary[key] as? [String: Any] {
newDictionary.keys.foreach { key in
adjustNextLayer(inDictionary: newDictionary, for: key}
myDictionary[key] = newDictionary
}
}
}
}
let myDictionary = ["a":1, "b":2]
let keys = myDictionary.keys
keys.foreach { key in
adjustNextLayer(inDictionary: myDictionary, for: key)
}
Denken Sie daran, dass Sie Funktionen innerhalb von Funktionen in schnellen platzieren können. Dies alles wäre in einer eigenen Funktion.
Natürlich könnte man auch flatMap verwenden, aber das geht höchstens zwei Schichten tief.
Wie zum Ändern der Schlüssel, warum nicht den vorherigen Schlüssel auf Null setzen und dann einen neuen Eintrag im Wörterbuch?
Bitte geben Sie an, ob Sie in Obj-C oder Swift arbeiten. – Hamish
@Hamish Verändert sich 'NSDictionary' anders, wenn es in Swift eingebunden wird? – Willeke
'NSDictionary' ist nicht änderbar. – Willeke