Swift:
Робота з YAML

Як це зробити:

Swift не включає вбудованої підтримки для парсингу та серіалізації YAML, що вимагає використання сторонніх бібліотек. Популярним вибором є Yams, бібліотека для роботи з YAML у Swift.

Спочатку вам потрібно додати Yams до вашого проекту. Якщо ви використовуєте Swift Package Manager, ви можете додати його як залежність у ваш файл Package.swift:

dependencies: [
    .package(url: "https://github.com/jpsim/Yams.git", from: "4.0.0")
]

Парсинг YAML у Swift

Припустимо, у вас є така конфігурація YAML для простого додатку:

name: MyApp
version: 1.0
environment: development
features:
  - login
  - notifications

Ось як ви можете розібрати цей YAML рядок у Swift за допомогою Yams:

import Yams

let yamlString = """
name: MyApp
version: 1.0
environment: development
features:
  - login
  - notifications
"""

do {
    if let data = try Yams.load(yaml: yamlString) as? [String: Any] {
        print(data)
        // Приклад доступу до розібраних даних
        if let name = data["name"] as? String {
            print("Назва додатку: \(name)")
        }
    }
} catch {
    print("Помилка парсингу YAML: \(error)")
}

Приклад виводу:

["name": MyApp, "version": 1.0, "environment": "development", "features": ["login", "notifications"]]
Назва додатку: MyApp

Серіалізація об’єктів Swift у YAML

Конвертація об’єкту Swift назад у рядок YAML також проста за допомогою Yams. Припустимо, у вас є та сама структура даних, яка потребує серіалізації:

let appInfo = [
    "name": "MyApp",
    "version": 1.0,
    "environment": "development",
    "features": ["login", "notifications"]
] as [String : Any]

do {
    let yamlString = try Yams.dump(object: appInfo)
    print(yamlString)
} catch {
    print("Помилка серіалізації у YAML: \(error)")
}

Це виробить рядок, відформатований у YAML:

environment: development
features:
  - login
  - notifications
name: MyApp
version: 1.0

Ці приклади демонструють основні операції для роботи з YAML у додатках Swift. Пам’ятайте, хоча YAML перевершує у читабельності для людини та простоті використання, завжди враховуйте специфічні потреби вашого додатку, особливо стосовно продуктивності та складності, при виборі вашого формату серіалізації даних.