Voici une solution utilisant le système de filtrage de Swift, pour séparer les différents composants de ton tableau. Attention c’est du Swift 4, donc Xcode 9. Cela ne fonctionnera pas en Swift 3.
let tab = ["A1", "A2", "A3", "B1", "B2", "C1", "C2", "C3", "C4"]
let tab_A = tab.filter({ Array($0)[0] == "A" })
let tab_B = tab.filter({ Array($0)[0] == "B" })
let tab_C = tab.filter({ Array($0)[0] == "C" })
print (tab_A)
print (tab_B)
print (tab_C)
Cela donne :
[« A1 », « A2 », « A3 »]
[« B1 », « B2 »]
[« C1 », « C2 », « C3 », "C4 »]
Comment ça marche ?
La fonction filter est un système génial permettant de créer un tableau à partir d’un autre tableau, à partir d’une condition de filtrage. J’en ai déjà parlé dans ce topic :
http://community.purplegiraffe.fr/t/tp-recopier-un-mot-afficher-dans-un-label/583/23?u=draken
Exemple d’utilisation :
let tab_A = tab.filter({ Array($0)[0] == "A" })
Ce code signifie : créer un tableau tab_A dont le contenu est composé de toutes les lignes du tableau tab dont le première caractère est la lettre « A ».
Comment je fais pour extraire la première lettre d’une chaîne de caractères ?
Swift 4 permet de convertir un String en un tableau de caractères avec Array. Il suffit de lire le premier indice du tableau pour lire le caractère du début.
let str = "ABCDEF"
let tableau = Array(str)
print ("Première lettre : ", tableau[0])
Première lettre : A
On peut faire autrement pour lire le premier caractère, mais j’aime bien la manière dont Swift 4 transforme un texte en tableau de caractères. Si tu utilises encore Xcode 8 et Swift 3, je peux t’expliquer une autre manière de lire la première lettre d’un String.
La manipulation des chaînes de caractères est expliqué dans le manuel Apple :
https://developer.apple.com/documentation/swift/string