Trabalhando com YAML em Swift: biblioteca Yams para iOS/macOS

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 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



  1. No Xcode, selecione File → Add Packages.
  2. Insira a URL do repositório: https://github.com/jpsim/Yams.git
  3. 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: true


Serializaçã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                    

Recommendations