Trabalhando com CSV em Swift (iOS/macOS): biblioteca SwiftCSV e fundamentos de parsing

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com CSV em Swift (iOS/macOS): biblioteca SwiftCSV e fundamentos de parsing



CSV (Comma-Separated Values) — um dos formatos mais populares para armazenar dados tabulares. No ecossistema Apple (iOS, macOS), trabalhar com arquivos CSV é frequentemente necessário para importar dados de fontes externas, exportar relatórios ou carregar configurações. Neste artigo, abordaremos a biblioteca SwiftCSV — uma solução leve e conveniente para parsing de CSV em Swift, além de exemplos básicos de trabalho com este formato sem dependências externas.



O que é SwiftCSV?



SwiftCSV é uma biblioteca open-source para Swift que permite ler e processar arquivos CSV facilmente. Ela suporta tanto parsing de strings quanto trabalho com arquivos, detecta automaticamente delimitadores (vírgula, tabulação, ponto e vírgula) e fornece uma API conveniente para acessar linhas, colunas e células individuais.



Principais funcionalidades:

  • Parsing de CSV a partir de string, Data ou URL (local ou remota).
  • Suporte a cabeçalhos de colunas (primeira linha como chaves).
  • Manipulação de aspas aninhadas e caracteres escapados.
  • Possibilidade de escolher o delimitador (vírgula, tabulação, personalizado).
  • Mínimo de dependências (Swift puro).


Instalação do SwiftCSV



Adicione a biblioteca via Swift Package Manager (SPM):

  1. No Xcode, selecione File → Add Packages....
  2. Cole a URL do repositório: https://github.com/swiftcsv/SwiftCSV.git.
  3. Escolha a versão (recomenda-se a última estável).
  4. Adicione o pacote ao seu target.


Ou adicione no Package.swift:

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


Exemplo básico: leitura de CSV a partir de string



Suponha que temos uma string CSV com dados de usuários:

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


Fazemos o parsing com SwiftCSV:

import SwiftCSV

do { let csv = try CSV(string: csvString) // Acesso às linhas como dicionários (chaves são os cabeçalhos) for row in csv.rows { if let name = row["name"], let age = row["age"], let city = row["city"] { print("\\(name) (\\(age) anos) mora em \\(city)") } }} catch { print("Erro de parsing: \\(error)")}


Saída:

Alice (30 anos) mora em New YorkBob (25 anos) mora em Los AngelesCharlie (35 anos) mora em Chicago


Leitura de CSV a partir de arquivo (iOS/macOS)



Para carregar CSV de um arquivo local (por exemplo, na pasta Documents ou do bundle):

import SwiftCSV

// Caminho do arquivo (exemplo: em Documents)let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("data.csv")

do { let csv = try CSV(url: fileURL) // Acesso às colunas let names = csv.columns["name"] ?? [] print("Todos os nomes: \\(names)")} catch { print("Erro: \\(error)")}


Para arquivo do bundle:

if let path = Bundle.main.path(forResource: "data", ofType: "csv") {    let url = URL(fileURLWithPath: path)    let csv = try CSV(url: url)    // Manipulação dos dados}


Delimitadores personalizados e configurações



Se seu CSV usa tabulação ou ponto e vírgula, especifique o delimitador explicitamente:

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

// Delimitador — ponto e vírgulalet csvSemicolon = try CSV(string: "name;ageAlice;30", delimiter: Character(";"))


Também é possível desabilitar o parsing de cabeçalhos (a primeira linha será tratada como linha comum):

let csvNoHead                    

Recommendations