Comment combiner deux Dictionnaire des instances de Swift?
Comment puis-je ajouter un Dictionary
à l'autre Dictionary
à l'aide de Swift
?
Je suis en utilisant le AlamoFire
bibliothèque pour envoyer un JSON
à un REST server
.
Dictionnaire 1
var dict1: [String: AnyObject] = [
kFacebook: [
kToken: token
]
]
Dictionnaire 2
var dict2: [String: AnyObject] = [
kRequest: [
kTargetUserId: userId
]
]
Comment puis-je combiner les deux dictionnaires de faire un nouveau dictionnaire, comme indiqué ci-dessous?
let parameters: [String: AnyObject] = [
kFacebook: [
kToken: token
],
kRequest: [
kTargetUserId: userId
]
]
J'ai essayé dict1 += dict2
, mais a eu une erreur de compilation:
Opérateur binaire '+=' ne peut pas être appliqué à deux " [Chaîne : AnyObject]' opérandes
Vous devez vous connecter pour publier un commentaire.
Reportez-vous à la super Dollar & Cent de projet
https://github.com/ankurp/Cent/blob/master/Sources/Dictionary.swift
extension
d'avoir cettefunction
disponibles partout dans mon code? Désolé je suis un noob![Key: Any]
)Dictionary
a ses propres fonctions de fusion. Voir stackoverflow.com/a/43615143/971329.J'aime cette approche:
dicFrom.forEach { (key, value) in dicTo[key] = value }
Swift 4 et 5
Avec Swift 4 Apple lance une meilleure approche de la fusion de deux dictionnaires:
Vous avez 2 options (comme avec la plupart des fonctions opérant sur les contenants):
merge
mutation de l'existant dictionnairemerging
renvoie un nouveau dictionnairePour Swift >= 2.2:
let parameters = dict1.reduce(dict2) { r, e in var r = r; r[e.0] = e.1; return r }
Pour Swift < 2.2:
let parameters = dict1.reduce(dict2) { (var r, e) in r[e.0] = e.1; return r }
Swift 4 a une nouvelle fonction:
let parameters = dict1.reduce(into: dict2) { (r, e) in r[e.0] = e.1 }
Il est vraiment important de creuser autour de la bibliothèque standard:
map
,reduce
,dropFirst
,forEach
etc. sont des agrafes de laconique code. La fonctionnelle bits sont amusants!SequenceType.forEach
(mis en œuvre parDictionary
) fournit une solution élégante pour ajouter un éléments du dictionnaire à un autre dictionnaire.Par exemple
Essayer Cette Approche
Il sera d'Impression Suivants :
}
Espère que cela aide !!
Mes besoins étaient différents, je voulais fusionner et de ne pas les fringues.
J'espérais une solution plus simple, mais c'est ce que j'ai fini avec. Le défi était de saut d'un typage dynamique à typage statique, et j'ai utilisé des protocoles de résoudre ce problème.
Également digne de remarque, c'est que lorsque vous utilisez le dictionnaire de la syntaxe littérale, vous obtenez en fait les types de fondation, qui ne ramassent pas les extensions de protocole. J'ai abandonné mes efforts pour soutenir ceux que je ne pouvais pas trouver un moyen facile pour valider l'uniformité de la collecte des éléments.
Vous pouvez utiliser le code ci-dessous pour combiner deux dictionnaire des instances dans Swift:
Vous utilisez le mot-clé let de déclarer le dictionnaire de sorte que vous ne pouvez pas faire les modifications à votre dictionnaire qu'il est utilisé pour déclarer des constantes.
Changer de mot-clé var puis il va travailler pour vous.