Trabalhando com YAML em Swift (iOS/macOS): biblioteca Yams
YAML (YAML Ain't Markup Language) é um formato conveniente de serialização de dados, frequentemente usado para arquivos de configuração, descrição de dependências (por exemplo, docker-compose.yml), bem como em projetos que exigem uma estrutura de dados legível e concisa. No ecossistema Apple, existem várias bibliotecas para trabalhar com YAML em Swift, mas a mais popular e estável é Yams — uma biblioteca rápida e fácil de usar, escrita em Swift puro.
O que é Yams?
Yams é uma biblioteca de código aberto que oferece suporte completo para parsing e serialização de YAML em Swift. Ela é compatível com iOS, macOS, tvOS e watchOS. Yams suporta a especificação YAML 1.2 e permite converter strings YAML em estruturas Swift (dicionários, arrays, strings, números, valores booleanos) e vice-versa.
Principais recursos do Yams:
- Parsing de string YAML em
Any(geralmente[String: Any]ou[Any]). - Serialização de objetos Swift de volta para YAML.
- Suporte para estruturas aninhadas, arrays, documentos múltiplos.
- Tratamento de erros com mensagens detalhadas.
- Totalmente compatível com Swift Package Manager (SPM) e CocoaPods.
Instalando Yams no projeto
Você pode instalar o Yams via Swift Package Manager (recomendado) ou CocoaPods.
Via Swift Package Manager
- No Xcode, selecione File → Add Packages.
- Insira a URL do repositório:
https://github.com/jpsim/Yams.git - Selecione a versão (recomenda-se a última estável) e clique em Add Package.
Ou adicione a dependência no Package.swift:
// swift-tools-version:5.7import PackageDescription
let package = Package( name: "MyProject", dependencies: [ .package(url: "https://github.com/jpsim/Yams.git", from: "5.0.0") ], targets: [ .target( name: "MyProject", dependencies: ["Yams"]) ])Via CocoaPods
Adicione a linha ao seu Podfile:
pod 'Yams', '~> 5.0'Em seguida, execute pod install.
Uso básico: parsing de YAML
Após a instalação, importe a biblioteca e use Yams.load(yaml:) para analisar a string.
import Yams
let yamlString = """name: Swifttype: languageversions: - 5.5 - 5.6 - 5.7features: protocol_oriented: true value_semantics: true"""
do { if let data = try Yams.load(yaml: yamlString) as? [String: Any] { print("Name: \\(data["name"] ?? "")") print("Versions: \\(data["versions"] ?? [])") if let features = data["features"] as? [String: Bool] { print("Protocol oriented: \\(features["protocol_oriented"] ?? false)") } }} catch { print("Erro ao fazer parsing do YAML: \\(error.localizedDescription)")}Resultado da execução:
Name: SwiftVersions: [5.5, 5.6, 5.7]Protocol oriented: trueSerialização de objetos Swift para YAML
Para a conversão inversa, use Yams.dump(object:):
import Yams
let dictionary: [String: Any] = [ "app": "MyApp", "version": 2.0, "features": ["dark_mode", "notifications"], "settings": [ "autosave": true, "timeout": 30 ]]
do { let yamlString = try Yams.dump(object: dictionary) print(yamlString)} catch { print("Erro de serialização: \\(error.localizedDescription)")}Saída:
app: MyAppfeatures: - dark_mode - notificationssettings: autosave: true timeout: 30 Também na biblioteca
Guia completo do Micrometer para Java com exemplos práticos
Geolocalização e Mapas em JavaScript (Node.js): bibliotecas e ferramentas
Biblioteca WebSocket Java: Tyrus — implementação JSR 356 para tempo real
Geração Swagger/OpenAPI para Swift: ferramentas e exemplos de código
Agendador de tarefas em TypeScript: guia completo sobre bibliotecas cron e temporizadores