0
votes

Puis-je composer des types à Swift?

Comment puis-je composer des types similaires à la composition de protocole dans Swift?

Par exemple, j'ai un aime code> data qui est un dictionnaire avec des valeurs ayant le int code> ou chaîne code>, mais pas d'autres. p> xxx pré>

courant, j'utilise une variable avec type, P>

var likes: [String: [String: AlphaNum]]


1 commentaires

Vous voulez probablement dire string | Int , qui irait bien dans les langues dactylographiées dynamiquement. Ce n'est pas possible à Swift. Vous devriez plutôt envelopper la valeur dans une structure personnalisée ou une énumération avec des valeurs associées.


3 Réponses :


2
votes

Vous pouvez créer votre propre protocole et laisser chaîne et int conforme à celui-ci: xxx

mais pour utiliser la valeurProtocols, vous devrait également ajouter des fonctions telles que getvalue en fonction de vos besoins.


0 commentaires

2
votes

Non, vous ne pouvez pas, comme vous pouvez le voir Typealias Alphanum = String & Int C'est & Opérateur non | \\ ou et que vous ne pouvez pas utiliser [chaîne: [chaîne: alphanum]] parce que le dictionnaire intérieur est fondamentalement string & int < / code>, une valeur ne peut pas être deux types d'une des deux, examinez cette Question , car les réponses sont à propos de créer un protocole factice et d'utiliser qu'il n'y a pas de propriétés partagées entre int et string mais un, description , donc même avec du mannequin < Code> protocole Il vous suffirait de lancer à un moment donné, sauf si vous n'utilisez que description en référence à la Réponse , xxx

et l'utiliser comme ceci, var goore: [String: [String: IntorsRing]] .

Après avoir entré dans la valeur Intorstring Vous pouvez utiliser .description propriété.


0 commentaires

3
votes

Je sais que la question a déjà été répondue, mais cela me semble que vous essayez de travailler avec JSON, et pour cette raison, je vous recommande vivement d'utiliser le protocole Decodable à Swift

décodable: Un type qui peut se décoder d'une représentation externe Docs

Ceci gérera facilement tout votre JSON entrant, par exemple: xxx


2 commentaires

+1 pour décodable. Je ne travaille pas directement avec Json dans cet exemple. Mais cette information aide certainement.


Ok, j'espère que cela a aidé, et si vous travaillez avec JSON décodable, c'est la meilleure façon que j'ai trouvée jusqu'à présent.