Trabalhando com YAML em Swift (iOS/macOS) — Bibliotecas Yams e YamlSwift

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)



YAML (YAML Ain't Markup Language) é um formato conveniente de serialização de dados, amplamente utilizado para arquivos de configuração, descrição de API e troca de dados. No ecossistema Swift para iOS e macOS, existem várias bibliotecas confiáveis que permitem analisar e gerar YAML. Neste artigo, veremos as duas mais populares: Yams e YamlSwift. Você aprenderá como instalá-las no seu projeto, realizar parsing básico, serialização e lidar com possíveis erros.



1. Visão geral das bibliotecas



Yams

Yams é uma biblioteca moderna para trabalhar com YAML, escrita inteiramente em Swift. Ela suporta a especificação YAML 1.2, incluindo um lexer, parser e ferramentas de serialização. Yams é ativamente mantida pela comunidade e é ideal para projetos que usam Swift Package Manager ou CocoaPods.



YamlSwift

YamlSwift é uma biblioteca mais leve, também escrita inteiramente em Swift. Ela fornece uma API minimalista para analisar strings e arquivos YAML. YamlSwift é perfeita para cenários simples, onde não é necessário suporte completo a todos os recursos do YAML.



2. Instalação



Ambas as bibliotecas podem ser instaladas via Swift Package Manager (SPM) ou CocoaPods. Vejamos ambas as opções.



Instalação via Swift Package Manager (recomendado)

No Xcode, abra File → Add Packages e insira a URL do repositório:

  • Yams: https://github.com/jpsim/Yams.git
  • YamlSwift: https://github.com/behrang/YamlSwift.git

Selecione a versão desejada (recomenda-se a última estável) e adicione o pacote ao seu target.



Instalação via CocoaPods

Adicione a linha ao seu Podfile:

# Para Yamspod 'Yams'

# Para YamlSwiftpod 'YamlSwift'

Em seguida, execute pod install.



3. Parsing de YAML com Yams



Após a instalação, importe a biblioteca no arquivo Swift:

import Yams


Parsing básico de string

Suponha que temos uma string YAML com informações do usuário:

let yamlString = """name: João Silvaage: 30languages:  - Swift  - Python  - JavaScript"""

O parsing é feito com a função Yams.load(yaml:):

do {    if let result = try Yams.load(yaml: yamlString) as? [String: Any] {        print("Nome: \\(result["name"] ?? "")")        print("Idade: \\(result["age"] ?? 0)")        if let languages = result["languages"] as? [String] {            print("Idiomas: \\(languages.joined(separator: ", "))")        }    }} catch {    print("Erro ao fazer parsing do YAML: \\(error.localizedDescription)")}


Parsing a partir de arquivo

Para carregar YAML de um arquivo no Bundle, use:

guard let filePath = Bundle.main.path(forResource: "config", ofType: "yaml"),      let yamlString = try? String(contentsOfFile: filePath, encoding: .utf8) else {    fatalError("Arquivo config.yaml não encontrado")}

do { let config = try Yams.load(yaml: yamlString) as? [String: Any] // trabalhar com config} catch { print("Erro: \\(error)")}


4. Serialização (criação de YAML) com Yams



Yams também permite converter objetos Swift de volta para uma string YAML. Use a função Yams.dump(object:):

let dictionary: [String: Any] = [    "name": "Ana Silva",    "age": 25,    "skills": ["iOS", "macOS", "watchOS"]]

do { let yamlString = try Yams.dump(object: dictionary) print(yamlString)} catch { print("Erro de serialização: \\(error)")}

O resultado será algo como:

age: 25name: Ana Silvaskills:-                    

Recommendations