Travailler avec CSV en Swift (iOS/macOS) : bibliothèques et exemples

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) : du simple au complexe



CSV (Comma-Separated Values) est l'un des formats les plus courants pour l'échange de données tabulaires. Il est utilisé pour l'exportation depuis Excel, Google Sheets, les bases de données et les journaux simples. Dans l'écosystème Swift (iOS, macOS, watchOS, tvOS), il n'existe pas de module intégré pour travailler avec CSV, mais plusieurs bibliothèques éprouvées simplifient considérablement ce processus. Dans cet article, nous examinerons les meilleurs outils et rédigerons plusieurs exemples de code.



Pourquoi ne pas écrire un analyseur CSV manuellement ?

À première vue, CSV semble simple : on divise la ligne par des virgules et c'est prêt. Cependant, en pratique, des difficultés surviennent :

  • Les champs peuvent contenir des virgules à l'intérieur (par exemple, "Smith, John").
  • Les champs peuvent être entourés de guillemets, et à l'intérieur des guillemets, des guillemets échappés ("").
  • Différents systèmes utilisent différents séparateurs (virgule, point-virgule, tabulation).
  • Problèmes d'encodage (UTF-8, UTF-16, Windows-1251).

Par conséquent, pour le code de production, il est fortement recommandé d'utiliser une bibliothèque prête à l'emploi.



Meilleures bibliothèques pour CSV en Swift



1. SwiftCSV (par Naoto Kaneko)

L'une des bibliothèques les plus populaires et les plus légères. Prend en charge la lecture et l'écriture, gère automatiquement les guillemets et l'échappement. Fonctionne via Swift Package Manager (SPM) et CocoaPods.

// Connexion via SPM : .package(url: "https://github.com/naoty/SwiftCSV.git", from: "0.9.0")


2. CodableCSV (par Dehesa)

Bibliothèque moderne qui s'intègre avec le protocole Codable. Permet d'analyser CSV directement dans des structures Swift. Idéal pour les projets où les données ont un typage strict.

// Connexion : .package(url: "https://github.com/dehesa/CodableCSV.git", from: "0.6.0")


3. CSwift

Bibliothèque simple et rapide avec une API minimale. Convient bien pour les petits projets ou le prototypage rapide.



Exemple 1 : Lecture CSV avec SwiftCSV

Supposons que nous ayons un fichier users.csv :

id,name,email1,Ivan Ivanov,ivan@example.com2,Maria Petrova,maria@example.com3,John Doe,"john.doe@example.com"


Code pour la lecture :

import SwiftCSV

guard let csvURL = Bundle.main.url(forResource: "users", withExtension: "csv") else { print("Fichier non trouvé") return}

do { let csv = try CSV(url: csvURL) // Accès aux lignes sous forme de tableau de dictionnaires for row in csv.rows { if let id = row["id"], let name = row["name"], let email = row["email"] { print("ID : \\(id), Nom : \\(name), Email : \\(email)") } } // Ou accès par colonnes print("Tous les noms : \\(csv.columns["name"] ?? [])")} catch { print("Erreur d'analyse : \\(error)")}


Exemple 2 : Écriture CSV avec SwiftCSV

import SwiftCSV

let headers = ["Nom", "Âge", "Ville"]let rows = [ ["Anna", "28", "Moscou"], ["Boris", "35", "Saint-Pétersbourg"], ["Victor", "22", "Novossibirsk"]]

do { let csv = try CSV(string: "", headers: headers, rows: rows) let csvString = csv.output // Obtention de la chaîne CSV print(csvString) // Sauvegarde dans un fichier let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] let fileURL = documentsPath.appendingPathComponent("output.csv") try csvString.write(to: fileURL, atomically: true, encoding: .utf8) print("Fichier sauvegardé : \\(fileURL)")} catch { print("Erreur d'écriture : \\(error)")}


Exemple 3 : CodableCSV — analyse en structures

Cet exemple montre comment intégrer facilement CSV avec des modèles de données :

import CodableCSV

struct User: Decodable { let id: Int let name: String let email: String}\

Recommendations