Comment puis-je composer des types similaires à la composition de protocole dans Swift?
Par exemple, j'ai un courant, j'utilise une variable avec type, P> aime code> data qui est un dictionnaire avec des valeurs ayant le
int code> ou
chaîne code>, mais pas d'autres. p>
var likes: [String: [String: AlphaNum]]
3 Réponses :
Vous pouvez créer votre propre protocole et laisser mais pour utiliser la valeurProtocols, vous devrait également ajouter des fonctions telles que chaîne code> et
int code> conforme à celui-ci:
getvalue code> en fonction de vos besoins. p> p>
Non, vous ne pouvez pas, comme vous pouvez le voir et l'utiliser comme ceci, Après avoir entré dans la valeur code> Intorstring code> Vous pouvez utiliser Typealias Alphanum = String & Int Code> C'est
& code> Opérateur non
| \\ ou code> et que vous ne pouvez pas utiliser
[chaîne: [chaîne: alphanum]] code> parce que le dictionnaire
intérieur code> 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 code> et
string code> mais un,
description code>, donc même avec du mannequin < Code> protocole code> Il vous suffirait de lancer à un moment donné, sauf si vous n'utilisez que
description code> en référence à la Réponse ,
var goore: [String: [String: IntorsRing]] Code>. P>
.description code> propriété. p> p>
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 code> Decodable code> à Swift
décodable: strong> Un type qui peut se décoder d'une représentation externe Docs P> blockQuote> Ceci gérera facilement tout votre JSON entrant, par exemple: p>
xxx pré> p>
+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.
Vous voulez probablement dire
string | Int code>, 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.