Dans mon cas particulier, j'ai NSDictionary
objet qui peut contenir NSString
objets en tant que clés et NSString
et NSDictionary
objets en tant que valeurs. Les dictionnaires internes peuvent également contenir des objets NSDictionary
. Et si j'ai besoin d'itérer tous les objets internes NSString
et de leur ajouter une lettre? Note: Je dois changer les valeurs et les clésItérer tous les éléments NSDictionary internes et les modifier?
Répondre
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)
}
Rappelez-vous que vous pouvez placer des fonctions à l'intérieur des fonctions rapides. Tout cela serait dans une fonction qui lui est propre.
Bien sûr, vous pouvez également utiliser flatMap, mais cela ne va pas au-delà de deux couches.
En ce qui concerne le changement de clé, pourquoi ne pas mettre la clé précédente à zéro, puis créer une nouvelle entrée dans le dictionnaire?
Pourriez-vous s'il vous plaît écrire la réponse complète? –
Est-ce ce que vous cherchez? –
Veuillez au minimum spécifier si vous travaillez en Obj-C ou Swift. – Hamish
@Hamish Est-ce que 'NSDictionary' se comporte différemment s'il est inclus dans Swift? – Willeke
'NSDictionary' n'est pas modifiable. – Willeke