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("App Name: \(name)")
        }
    }
} catch {
    print("ข้อผิดพลาดในการแยกวิเคราะห์ YAML: \(error)")
}

ผลลัพธ์ตัวอย่าง:

["name": MyApp, "version": 1.0, "environment": "development", "features": ["login", "notifications"]]
App Name: 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 โดดเด่นในเรื่องความสามารถอ่านได้ง่ายและการใช้งานง่าย คุณควรพิจารณาระบุความต้องการเฉพาะของแอปพลิเคชันของคุณเสมอ โดยเฉพาะอย่างยิ่งในแง่ของประสิทธิภาพและความซับซ้อน เมื่อเลือกรูปแบบการซีเรียลไลซ์ข้อมูลของคุณ