العمل مع نظام الملفات في Swift: دليل عملي

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

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

ابدأ الدورة

مقدمة

\n

العمل مع نظام الملفات هو أحد المهام الأساسية عند تطوير التطبيقات لنظامي iOS وmacOS. بغض النظر عما إذا كنت تكتب تطبيقًا لحفظ بيانات المستخدم، أو تخزين الصور مؤقتًا، أو تصدير المستندات، فإن فهم أساسيات العمل مع الملفات في Swift هو مهارة ضرورية. في هذه المقالة، سنستعرض أمثلة عملية للعمل مع نظام الملفات: إنشاء الملفات وقراءتها وكتابتها وحذفها وإدارة الدلائل.

\n

توفر Apple واجهة برمجة تطبيقات قوية FileManager تتيح التفاعل مع نظام الملفات على كل من iOS وmacOS. سنستعرضها من خلال أمثلة حقيقية مع كود جاهز.

\n\n

1. الحصول على مسارات الدلائل النظامية

\n

قبل البدء في العمل مع الملفات، تحتاج إلى الوصول إلى الدلائل الصحيحة. في iOS وmacOS، يعمل كل تطبيق في بيئة معزولة (sandbox). لتخزين البيانات، استخدم المسارات التالية:

\n\n

دليل Documents

\n

يُستخدم لتخزين بيانات المستخدم التي يجب الاحتفاظ بها عند تحديثات التطبيق والنسخ الاحتياطي.

\n
import Foundation\n\nfunc getDocumentsDirectory() -> URL {\n    let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)\n    return paths[0]\n}\n\n// مثال على الاستخدام\nlet documentsURL = getDocumentsDirectory()\nprint("Documents path: \\(documentsURL.path)")
\n\n

دليل Caches

\n

للملفات المؤقتة التي يمكن إعادة إنشائها (مثل ذاكرة التخزين المؤقت للصور).

\n
func getCachesDirectory() -> URL {\n    let paths = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)\n    return paths[0]\n}
\n\n

دليل Library/Application Support

\n

لتخزين البيانات التي لا ينبغي أن تكون متاحة للمستخدم مباشرة، ولكن يجب الاحتفاظ بها.

\n
func getApplicationSupportDirectory() -> URL {\n    let paths = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)\n    let directory = paths[0]\n    // تأكد من وجود الدليل\n    try? FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true)\n    return directory\n}
\n\n

2. إنشاء وكتابة الملفات

\n

الآن بعد أن عرفنا أين نخزن الملفات، دعنا نتعلم كيفية إنشائها وكتابة البيانات.

\n\n

كتابة البيانات النصية

\n

أبسط طريقة هي استخدام طريقة write(to:) مع سلسلة نصية أو Data.

\n
func writeTextFile() {\n    let fileName = "example.txt"\n    let documentsURL = getDocumentsDirectory()\n    let fileURL = documentsURL.appendingPathComponent(fileName)\n    \n    let content = "Hello, Swift! هذا ملف اختبار."\n    \n    do {\n        try content.write(to: fileURL, atomically: true, encoding: .utf8)\n        print("تم إنشاء الملف بنجاح: \\(fileURL.path)")\n    } catch {\n        print("خطأ في كتابة الملف: \\(error.localizedDescription)")\n    }\n}
\n\n

كتابة البيانات الثنائية (صور، JSON)

\n

للعمل مع البيانات الثنائية، نستخدم Data.

\n
func writeJSONFile() {\n    let fileName = "data.json"\n    let documentsURL = getDocumentsDirectory()\n    let fileURL = documentsURL.appendingPathComponent(fileName)\n    \n    let dictionary: [String: Any] = [\n        "name": "Swift Developer",\n        "age": 30,\n        "skills": ["iOS", "macOS", "SwiftUI"]\n    ]\n    \n    do {\n        let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted)\n        try jsonData.write(to: fileURL, options: .atomic)\n        print("تم حفظ ملف JSON")\n    } catch {\n        print("خطأ: \\(error)")\n    }\n}
\n\n

إنشاء الدلائل

\n

في بعض الأحيان تحتاج إلى إنشاء مجلدات متداخلة لتنظيم الملفات.

\n
func createSubdirectories() {\n    let documentsURL = getDocumentsDirectory()\n    let subDirURL = documentsURL.appendingPathCo                

المدونات

توصيات الكتب