Что такое SwiftyConfig?
SwiftyConfig — это легковесная библиотека для управления конфигурациями iOS/macOS-приложений на Swift. Она предоставляет удобный интерфейс для чтения настроек из .plist, .json или .yaml файлов, а также поддерживает работу с переменными окружения. Библиотека автоматически проверяет типы данных, поддерживает вложенные структуры и позволяет задавать значения по умолчанию.
Зачем нужна SwiftyConfig?
В процессе разработки приложений часто возникает необходимость хранить настройки окружения (API-ключи, URL серверов, флаги фич) отдельно от кода. SwiftyConfig решает эту проблему, предлагая:
- Типобезопасность — компилятор проверяет типы конфигураций на этапе сборки.
- Гибкость — поддержка нескольких форматов файлов и источников данных.
- Простота — минимум кода для инициализации и доступа к настройкам.
Установка
Добавьте в Package.swift:
.package(url: "https://github.com/example/SwiftyConfig.git", from: "1.0.0")Или через CocoaPods:
pod 'SwiftyConfig'Основные функции
- Автоматическое обнаружение конфигураций — ищет файлы
Config.plistв бандле. - Поддержка вложенных ключей — доступ через точечную нотацию:
config["server.host"]. - Типизированные геттеры —
string(forKey:),int(forKey:),bool(forKey:)и др. - Значения по умолчанию — если ключ отсутствует, возвращается заданное значение.
- Кэширование — однократное чтение файла с последующим кэшированием в памяти.
Пример кода
import SwiftyConfig
// Инициализация (автоматически загружает Config.plist)
let config = try SwiftyConfig()
// Чтение значений
let apiKey: String = config.string(forKey: "api.key") ?? ""
let maxRetries: Int = config.int(forKey: "network.maxRetries") ?? 3
let isDebugMode: Bool = config.bool(forKey: "debug.enabled") ?? false
// Или с точечной нотацией
if let host = config["server.host"] as? String {
print("Server host: \(host)")
}
// Для macOS можно добавить поддержку переменных окружения:
let envConfig = SwiftyConfig(environment: ProcessInfo.processInfo.environment)
print(envConfig.string(forKey: "DATABASE_URL") ?? "default")Когда использовать SwiftyConfig?
Библиотека идеально подходит для:
- Мультиокруженных приложений — dev/staging/prod с разными конфигурациями.
- Feature toggles — быстрого включения/отключения функций без пересборки.
- Сборки под несколько target — iOS, macOS, watchOS с общими настройками.
- Open-source проектов — где нужно скрыть реальные ключи и вынести их в отдельный файл.
SwiftyConfig — это минималистичное, но мощное решение для конфигурирования Swift-приложений, которое упрощает поддержку и масштабирование кода.