Je sais comment le faire par programmation, mais je suis sûr qu'il existe une méthode intégrée ...
Chaque langue que j'ai utilisée a une sorte de représentation textuelle par défaut pour une collection d'objets qu'elle crache lorsque vous essayez de concaténer le tableau avec une chaîne, ou de la passer à une fonction print (), etc. Est-ce que le langage Swift d'Apple avoir un moyen intégré de transformer facilement un tableau en chaîne, ou devons-nous toujours être explicites lors de la chaîne d'un tableau?
array.description
ou si vous voulez un séparateur personnaliséarray.joined(separator: ",")
Réponses:
Si le tableau contient des chaînes, vous pouvez utiliser la
String
de »join
méthode:Dans Swift 2 :
Cela peut être utile si vous souhaitez utiliser un séparateur spécifique (hypen, vide, virgule, etc.).
Sinon, vous pouvez simplement utiliser la
description
propriété, qui renvoie une représentation sous forme de chaîne du tableau:Astuce: tout objet implémentant le
Printable
protocole a undescription
propriété. Si vous adoptez ce protocole dans vos propres classes / structures, vous les rendez également imprimablesDans Swift 3
join
devientjoined
, exemple[nil, "1", "2"].flatMap({$0}).joined()
joinWithSeparator
devientjoined(separator:)
(uniquement disponible pour Array of Strings)Dans Swift 4
la source
"-".join(array)
n'est plus disponible dans Swift 2, Xcode 7 Beta 6, essayez d'utiliserarray.joinWithSeparator("-")
joinWithSeparator
n'est disponible que pour un tableau de chaînes. Si vous avez un tableau d'autres objets, utilisez-le d'map
abord. Par exemple,[1, 2, 3].map({"\($0)"}).joinWithSeparator(",")
Avec Swift 5, selon vos besoins, vous pouvez choisir l'un des exemples de codes Playground suivants afin de résoudre votre problème.
Transformer un tableau de
Character
s en unString
sans séparateur:Transformer un tableau de
String
s en unString
sans séparateur:Transformer un tableau de
String
s en unString
avec un séparateur entre les mots:Transformer un tableau de
String
s en unString
avec un séparateur entre les caractères:Transformer un tableau de
Float
s en unString
avec un séparateur entre les nombres:la source
try JSONDecoder().decode([Int].self, from: Data(string.utf8))
Swift 2.0 Xcode 7.0 bêta 6 utilise à la
joinWithSeparator()
place dejoin()
:joinWithSeparator
est défini comme une extension surSequenceType
la source
Swift 3
la source
Dans Swift 4
la source
Puisque personne n'a mentionné réduire, voici:
Dans l'esprit de la programmation fonctionnelle 🤖
la source
[0,1,1,0].map{"\($0)"}.reduce("",+)
. 😉[0,1,1,0].map(String.init).joined()
Pour modifier un tableau de chaînes facultatives / non facultatives
Ici flatMap , compactMap ignore les valeurs nulles dans le tableau et ajoute les autres valeurs pour donner une chaîne jointe.
la source
Le mien fonctionne sur NSMutableArray avec componentsJoinedByString
la source
Dans Swift 2.2, vous devrez peut-être convertir votre tableau en NSArray pour utiliser componentsJoinedByString (",")
la source
Si vous souhaitez abandonner les chaînes vides dans le tableau.
Si vous souhaitez également filtrer les valeurs nulles:
la source
Le résultat sera >>> Mani Singh Développeur iOS
la source
L'équivalent Swift de ce que vous décrivez est l'interpolation de chaînes. Si vous pensez à des choses comme JavaScript
"x" + array
, l'équivalent dans Swift est"x\(array)"
.En règle générale, il existe une différence importante entre l'interpolation de chaînes et le
Printable
protocole. Seules certaines classes sont conformesPrintable
. Chaque classe peut être interpolée en quelque sorte. Cela est utile lors de l'écriture de fonctions génériques. Vous n'avez pas à vous limiter auxPrintable
cours.la source
Vous pouvez imprimer n'importe quel objet à l'aide de la fonction d'impression
ou utilisez
\(name)
pour convertir n'importe quel objet en chaîne.Exemple:
la source
Créer une extension pour
Array
:la source
Un séparateur peut être une mauvaise idée pour certaines langues comme l'hébreu ou le japonais. Essaye ça:
Pour les autres types de données respectivement:
la source
si vous avez une liste de tableaux de chaînes, convertissez-la en Int
cela vous donnera une valeur de chaîne
la source
pour tout type d'élément
la source
Essaye ça:
la source
POUR SWIFT 3:
la source
Si vous vous demandez quelque chose comme ceci: tobeFormattedString = ["a", "b", "c"] Output = "abc"
String(tobeFormattedString)
la source
String
n'a pas d'initialiseur capable de le faire. Soit vous utilisez une extension personnalisée ou une bibliothèque tierce, soit vous vous trompez tout simplement.