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.