العمل مع YAML في Swift (iOS/macOS) — مكتبات Yams وYamlSwift

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع YAML في Swift (iOS/macOS)



YAML (YAML Ain't Markup Language) هو تنسيق مناسب لتسلسل البيانات، يُستخدم على نطاق واسع لملفات التكوين، وصف واجهات برمجة التطبيقات (API)، وتبادل البيانات. في نظام Swift البيئي لنظامي iOS وmacOS، تتوفر عدة مكتبات موثوقة لتحليل وإنشاء YAML. في هذه المقالة، سنستعرض المكتبتين الأكثر شيوعًا: Yams وYamlSwift. ستتعلم كيفية تثبيتهما في مشروعك، إجراء التحليل الأساسي، التسلسل، ومعالجة الأخطاء المحتملة.



1. نظرة عامة على المكتبات



Yams

Yams هي مكتبة حديثة للعمل مع YAML، مكتوبة بالكامل بلغة Swift. تدعم مواصفات YAML 1.2، وتتضمن محللاً معجمياً (lexer)، محللاً (parser)، وأدوات للتسلسل. Yams مدعومة بنشاط من المجتمع ومناسبة تمامًا للمشاريع التي تستخدم Swift Package Manager أو CocoaPods.



YamlSwift

YamlSwift هي مكتبة أخف وزنًا، مكتوبة أيضًا بالكامل بلغة Swift. توفر واجهة برمجة تطبيقات (API) بسيطة لتحليل سلاسل وملفات YAML. YamlSwift مثالية للسيناريوهات البسيطة التي لا تتطلب دعمًا كاملاً لجميع ميزات YAML.



2. التثبيت



يمكن تثبيت كلتا المكتبتين عبر Swift Package Manager (SPM) أو CocoaPods. سنستعرض كلا الخيارين.



التثبيت عبر Swift Package Manager (موصى به)

في Xcode، افتح File → Add Packages وألصق رابط المستودع:

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

اختر الإصدار المطلوب (يوصى بآخر إصدار مستقر) وأضف الحزمة إلى الـ target الخاص بك.



التثبيت عبر CocoaPods

أضف السطر التالي إلى ملف Podfile الخاص بك:

# لـ Yamspod 'Yams'

# لـ YamlSwiftpod 'YamlSwift'

ثم نفذ الأمر pod install.



3. تحليل YAML باستخدام Yams



بعد التثبيت، قم باستيراد المكتبة في ملف Swift:

import Yams


التحليل الأساسي لسلسلة نصية

لنفترض أن لدينا سلسلة YAML تحتوي على معلومات مستخدم:

let yamlString = """name: إيفان بيتروفage: 30languages:  - Swift  - Python  - JavaScript"""

يتم التحليل باستخدام الدالة Yams.load(yaml:):

do {    if let result = try Yams.load(yaml: yamlString) as? [String: Any] {        print("الاسم: \\(result["name"] ?? "")")        print("العمر: \\(result["age"] ?? 0)")        if let languages = result["languages"] as? [String] {            print("اللغات: \\(languages.joined(separator: ", "))")        }    }} catch {    print("خطأ في تحليل YAML: \\(error.localizedDescription)")}


التحليل من ملف

لتحميل YAML من ملف في Bundle، استخدم:

guard let filePath = Bundle.main.path(forResource: "config", ofType: "yaml"),      let yamlString = try? String(contentsOfFile: filePath, encoding: .utf8) else {    fatalError("لم يتم العثور على ملف config.yaml")}

do { let config = try Yams.load(yaml: yamlString) as? [String: Any] // العمل مع config} catch { print("خطأ: \\(error)")}


4. التسلسل (إنشاء YAML) باستخدام Yams



تسمح Yams أيضًا بتحويل كائنات Swift مرة أخرى إلى سلسلة YAML. استخدم الدالة Yams.dump(object:):

let dictionary: [String: Any] = [    "name": "آنا سميرنوفا",    "age": 25,    "skills": ["iOS", "macOS", "watchOS"]]

do { let yamlString = try Yams.dump(object: dictionary) print(yamlString)} catch { print("خطأ في التسلسل: \\(error)")}

ستكون النتيجة كالتالي:

age: 25name: آنا سميرنوفاskills:-                    

توصيات