Что такое CSVImporter и зачем он нужен?
CSVImporter — это легковесная библиотека для Swift (iOS/macOS), которая упрощает импорт, парсинг и экспорт CSV-файлов. В отличие от стандартного Foundation, CSVImporter предоставляет готовые инструменты для обработки больших табличных данных, автоматического определения разделителей и работы с кодировками. Библиотека идеально подходит для приложений, где требуется загрузка данных из внешних источников: бухгалтерских отчетов, списков контактов, датасетов для машинного обучения или конфигурационных файлов.
Установка
CSVImporter устанавливается через Swift Package Manager. Добавьте зависимость в Package.swift:
.package(url: "https://github.com/Flinesoft/CSVImporter.git", from: "1.9.0")Или через Xcode: File → Add Packages → вставьте URL репозитория.
Основные функции
- Автоопределение разделителя — поддерживаются запятые, точки с запятой, табуляции.
- Потоковый парсинг — обрабатывает файлы любого размера без загрузки в память целиком.
- Поддержка кодировок — UTF-8, Windows-1251, ISO Latin-1.
- Гибкая типизация — преобразование строк в Int, Double, Date и кастомные структуры.
- Экспорт — создание CSV из массивов словарей.
Пример кода на Swift
import CSVImporter
// Импорт из файла
let path = Bundle.main.path(forResource: "data", ofType: "csv")!
let importer = CSVImporter<[String]>(path: path)
let records = importer.importRecords { $0 } // [["Name", "Age"], ["Alice", "30"], ...]
// Парсинг с заголовками
let structured = importer.importRecords { record in
return Person(name: record[0], age: Int(record[1]) ?? 0)
}
// Экспорт
let data = [["Name", "Age"], ["Bob", "25"]]
let csvString = data.csvString() // "Name,Age\nBob,25"
try? csvString.write(to: URL(fileURLWithPath: "/tmp/output.csv"), atomically: true, encoding: .utf8)Когда использовать CSVImporter?
- При работе с табличными данными из Excel/Google Sheets.
- В приложениях для анализа финансов, учета товаров или ведения статистики.
- При миграции данных между сервисами (например, импорт контактов из CSV).
- В macOS-утилитах для обработки логов или конфигураций.
Библиотека стабильна, имеет 100% тестовое покрытие и поддерживается сообществом с 2016 года. Подходит для iOS 13+, macOS 10.15+.