Travailler avec CSV en Swift (iOS/macOS) — bibliothèques et exemples de code

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èques, analyse et exemples



CSV (Comma-Separated Values) est l'un des formats les plus courants pour l'échange de données tabulaires. Dans l'écosystème Apple (iOS, macOS, watchOS), travailler avec CSV est souvent nécessaire pour l'import/export de données, le chargement de configurations ou le traitement de logs. Dans cet article, nous examinerons les principales approches pour travailler avec CSV en Swift : analyse manuelle, bibliothèques populaires (SwiftCSV et CodableCSV) et exemples de code avec explications.



1. Pourquoi utiliser des bibliothèques pour CSV ?



La bibliothèque standard Foundation ne fournit pas d'outils prêts à l'emploi pour travailler avec CSV. L'analyse manuelle (séparation par virgules, gestion des guillemets, échappement des caractères) devient rapidement lourde et sujette aux erreurs. Les bibliothèques résolvent les problèmes suivants :

  • Traitement correct des guillemets et des caractères échappés.
  • Prise en charge de différents séparateurs (virgule, tabulation, point-virgule).
  • Lecture de gros fichiers en flux (sans chargement complet en mémoire).
  • Intégration avec Codable pour une désérialisation automatique.


2. Bibliothèque SwiftCSV



SwiftCSV est une bibliothèque légère pour la lecture et l'écriture de CSV. Elle prend en charge les lignes, les dictionnaires et les tableaux imbriqués. Installation via Swift Package Manager :

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


Exemple de lecture d'un CSV à partir d'un fichier :

import SwiftCSV

guard let path = Bundle.main.path(forResource: "data", ofType: "csv") else { fatalError("CSV file not found")}let csv = try CSV(url: URL(fileURLWithPath: path))

// Accès aux lignes par en-têtesfor row in csv.rows { let name = row["name"] ?? "" let age = row["age"] ?? "" print("\\(name) is \\(age) years old")}

// Accès aux colonneslet allNames = csv.columns["name"] ?? []print(allNames)


Écriture de CSV : la bibliothèque ne fournit pas de méthode d'écriture intégrée, mais vous pouvez former une chaîne manuellement :

func writeCSV(rows: [[String: String]], headers: [String]) -> String {    var csvString = headers.joined(separator: ",") + ""    for row in rows {        let values = headers.map { row[$0] ?? "" }        csvString += values.joined(separator: ",") + ""    }    return csvString}

let csvData = writeCSV(rows: data, headers: ["name", "age"])try csvData.write(to: url, atomically: true, encoding: .utf8)


3. Bibliothèque CodableCSV



CodableCSV est une bibliothèque puissante prenant en charge Codable, les séparateurs personnalisés, la lecture en flux et l'encodage configurable. Idéale pour les projets complexes.



Installation :

// Package.swiftdependencies: [    .package(url: "https://github.com/dehesa/CodableCSV.git", from: "0.9.0")]


Exemple de lecture avec désérialisation automatique en modèle :

import CodableCSV

struct Person: Codable { let name: String let age: Int let email: String?}

let data = try Data(contentsOf: url)let decoder = CSVDecoder { config in config.headerStrategy = .firstLine // première ligne — en-têtes config.delimiter = .comma}let people = try decoder.decode([Person].self, from: data)

for person in people { print(person.name, person.age)}


Écriture de CSV avec CodableCSV :

let encoder = CSVEncoder { config in    config.headerStrategy = .firstLine    config.delimiter = .comma}let data = try encoder.encode(people, into: Data.self)try data.write(to: url, options: .atomic)


4. Analyse manuelle (sans bibliothèques)



Si le projet est petit et que vous souhaitez éviter les dépendances, vous pouvez implémenter un analyseur simple.

Recommendations