SwiftConfig: Gerenciamento de configuração de aplicativos em Swift

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

Biblioteca SwiftConfig para gerenciamento de configuração de aplicativos iOS/macOS

SwiftConfig é uma biblioteca leve em Swift, projetada para gerenciar convenientemente configurações em aplicativos iOS e macOS. Ela permite separar as configurações (chaves de API, endpoints de URL, flags de funcionalidades) do código, armazenando-as em arquivos estruturados (JSON, YAML, plist) ou variáveis de ambiente.

Por que usar SwiftConfig?

Em aplicativos modernos, é frequentemente necessário alterar o comportamento sem recompilar: alternar entre servidores de staging/production, testes A/B, alterar timeouts. Armazenar configurações manualmente no UserDefaults ou usar hardcode leva a erros e dificulta a manutenção. O SwiftConfig resolve esses problemas fornecendo:

  • Acesso type-safe a valores via enum e Codable
  • Suporte a múltiplas fontes (arquivos, env, UserDefaults)
  • Atualização automática quando os arquivos são alterados (por exemplo, para SwiftUI previews)
  • Validação do esquema de configuração na inicialização

Instalação

Adicione a biblioteca via Swift Package Manager no Xcode:

File → Add Packages → insira a URL do repositório do SwiftConfig

Ou adicione no Package.swift:

.package(url: "https://github.com/example/SwiftConfig.git", from: "1.0.0")

Funcionalidades principais

  • Multiformato: detecção automática do formato do arquivo (json, yaml, plist)
  • Environment overlay: valores de variáveis de ambiente têm prioridade sobre arquivos
  • Cache: o parsing ocorre uma vez, e os dados são armazenados em memória
  • Baseado em protocolo: você define um protocolo com requisitos, a biblioteca gera a implementação

Exemplo de código em Swift (iOS/macOS)

import SwiftConfig

// Define a estrutura de configuraçãostruct AppConfig: Codable { let apiURL: String let timeout: Double let isFeatureXEnabled: Bool}

// Carrega a configuração do arquivo config.jsonlet configManager = try ConfigManager<AppConfig>(source: .file("config"))

// Usa no códigolet url = URL(string: configManager.current.apiURL)!let session = URLSession(configuration: .default)session.configuration.timeoutIntervalForRequest = configManager.current.timeout

// Para SwiftUI, pode usar @Publishedclass SettingsViewModel: ObservableObject { @Published var config: AppConfig init() { self.config = try! ConfigManager<AppConfig>(source: .file("config")).current }}

Quando usar SwiftConfig?

  • Em projetos multi-environment (dev/staging/prod)
  • Quando for necessário alterar o comportamento do aplicativo sem re-deploy
  • Para trabalhar com feature toggles
  • Em bibliotecas e frameworks que exigem configuração via arquivos de configuração

A biblioteca é especialmente útil para pipelines de CI/CD, onde variáveis de ambiente são injetadas dinamicamente na etapa de build. O SwiftConfig suporta iOS 15+, macOS 12+ e é totalmente compatível com SwiftUI e Combine.

Recommendations