Travailler avec CSV en Swift (iOS/macOS) : bibliothèque SwiftCSV et bases du parsing

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec CSV en Swift (iOS/macOS) : bibliothèque SwiftCSV et bases du parsing



CSV (Comma-Separated Values) est l'un des formats les plus populaires pour stocker des données tabulaires. Dans l'écosystème Apple (iOS, macOS), travailler avec des fichiers CSV est souvent nécessaire pour importer des données depuis des sources externes, exporter des rapports ou charger des configurations. Dans cet article, nous examinerons la bibliothèque SwiftCSV — une solution légère et pratique pour le parsing CSV en Swift, ainsi que des exemples de base pour travailler avec ce format sans dépendances tierces.



Qu'est-ce que SwiftCSV ?



SwiftCSV est une bibliothèque open-source pour Swift qui permet de lire et traiter facilement des fichiers CSV. Elle prend en charge à la fois le parsing de chaînes et le travail avec des fichiers, détecte automatiquement les délimiteurs (virgule, tabulation, point-virgule) et fournit une API pratique pour accéder aux lignes, colonnes et cellules individuelles.



Fonctionnalités principales :

  • Parsing CSV à partir d'une chaîne, de Data ou d'une URL (locale ou distante).
  • Prise en charge des en-têtes de colonnes (première ligne comme clés).
  • Gestion des guillemets imbriqués et des caractères échappés.
  • Possibilité de choisir le délimiteur (virgule, tabulation, personnalisé).
  • Nombre minimal de dépendances (Swift pur).


Installation de SwiftCSV



Ajoutez la bibliothèque via Swift Package Manager (SPM) :

  1. Dans Xcode, sélectionnez File → Add Packages....
  2. Collez l'URL du dépôt : https://github.com/swiftcsv/SwiftCSV.git.
  3. Choisissez la version (la dernière stable est recommandée).
  4. Ajoutez le paquet à votre cible.


Ou ajoutez dans Package.swift :

dependencies: [    .package(url: "https://github.com/swiftcsv/SwiftCSV.git", from: "0.9.0")]


Exemple de base : lecture CSV à partir d'une chaîne



Supposons que nous ayons une chaîne CSV avec des données utilisateur :

let csvString = """name,age,cityAlice,30,New YorkBob,25,Los AngelesCharlie,35,Chicago"""


Nous la parsons avec SwiftCSV :

import SwiftCSV

do { let csv = try CSV(string: csvString) // Accès aux lignes sous forme de dictionnaires (clés = en-têtes) for row in csv.rows { if let name = row["name"], let age = row["age"], let city = row["city"] { print("\\(name) (\\(age) ans) vit à \\(city)") } }} catch { print("Erreur de parsing : \\(error)")}


Sortie :

Alice (30 ans) vit à New YorkBob (25 ans) vit à Los AngelesCharlie (35 ans) vit à Chicago


Lecture CSV à partir d'un fichier (iOS/macOS)



Pour charger un CSV depuis un fichier local (par exemple, dans le dossier Documents ou depuis le bundle) :

import SwiftCSV

// Chemin vers le fichier (ex. dans Documents)let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("data.csv")

do { let csv = try CSV(url: fileURL) // Accès aux colonnes let names = csv.columns["name"] ?? [] print("Tous les noms : \\(names)")} catch { print("Erreur : \\(error)")}


Pour un fichier depuis le bundle :

if let path = Bundle.main.path(forResource: "data", ofType: "csv") {    let url = URL(fileURLWithPath: path)    let csv = try CSV(url: url)    // Travail avec les données}


Délimiteurs personnalisés et paramètres



Si votre CSV utilise la tabulation ou le point-virgule, spécifiez le délimiteur explicitement :

// TSV (Tab-Separated Values)let tsv = try CSV(string: "name\\tageAlice\\t30", delimiter: .tab)

// Délimiteur — point-virgulelet csvSemicolon = try CSV(string: "name;ageAlice;30", delimiter: Character(";"))


Vous pouvez également désactiver le parsing des en-têtes (la première ligne sera une ligne normale) :

let csvNoHead                    

Recommendations