Alamofire لـ Swift: دليل كامل مع أمثلة

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

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

ابدأ الدورة

ما هو Alamofire ولماذا تحتاجه

\n

Alamofire هي مكتبة أنيقة وقوية للعمل مع طلبات الشبكة بلغة Swift. توفر واجهة سهلة الاستخدام لتنفيذ طلبات HTTP، ومعالجة الردود، وتحميل وتنزيل البيانات، بالإضافة إلى العمل مع المصادقة والتسلسل. مكتوبة بلغة Swift النقية، وتدعم iOS وmacOS وtvOS وwatchOS.

\n

الأسباب الرئيسية لاستخدام Alamofire:

\n
    \n
  • سهولة الاستخدام — واجهة برمجة تطبيقات بديهية تقلل من حجم الكود مقارنة بـ URLSession.
  • \n
  • التسلسل التلقائي — دعم مدمج لـ JSON و Property List والتنسيقات المخصصة.
  • \n
  • سلاسل الطلبات — سهولة دمج عدة طلبات ومعالجتها بالتسلسل.
  • \n
  • معالجة الأخطاء — معلومات مفصلة عن أخطاء الشبكة والخادم.
  • \n
  • دعم SSL-pinning — اتصال آمن بالخادم.
  • \n
  • تحميل الملفات — دعم تتبع التقدم واستئناف التحميل.
  • \n
  • مجتمع نشط — تحديثات منتظمة والعديد من الأمثلة.
  • \n
\n\n

تثبيت Alamofire

\n

يتم تثبيت Alamofire عبر Swift Package Manager (SPM) أو CocoaPods أو Carthage. الطريقة الموصى بها هي SPM.

\n

التثبيت عبر Swift Package Manager (SPM)

\n
    \n
  1. في Xcode، افتح مشروعك: File → Add Packages...
  2. \n
  3. أدخل رابط المستودع: https://github.com/Alamofire/Alamofire.git
  4. \n
  5. اختر الإصدار (أحدث إصدار مستقر) واضغط Add Package.
  6. \n
  7. تأكد من إضافة الحزمة إلى الهدف الخاص بك.
  8. \n
\n

التثبيت عبر CocoaPods

\n
# Podfile\nplatform :ios, '13.0'\nuse_frameworks!\n\ntarget 'YourApp' do\n  pod 'Alamofire', '~> 5.9'\nend
\n

بعد ذلك، قم بتنفيذ pod install.

\n

التثبيت عبر Carthage

\n
# Cartfile\ngithub "Alamofire/Alamofire" ~> 5.9
\n

ثم قم بتنفيذ carthage update --platform iOS.

\n\n

بداية سريعة مع مثال كود

\n

بعد التثبيت، قم باستيراد المكتبة ونفذ طلب GET بسيط:

\n
import Alamofire\n\n// طلب GET بسيط\nAF.request("https://jsonplaceholder.typicode.com/posts/1")\n    .responseJSON { response in\n        switch response.result {\n        case .success(let data):\n            print("البيانات المستلمة: \\(data)")\n        case .failure(let error):\n            print("خطأ: \\(error.localizedDescription)")\n        }\n    }
\n

هذا الكود يرسل طلبًا إلى API اختباري، ويستقبل JSON ويطبعه في وحدة التحكم. يقوم Alamofire تلقائيًا بمعالجة جلسة URL وإنشاء الطلب وتسلسل الرد.

\n\n

الطرق والوظائف الأساسية لـ Alamofire

\n

دعنا نستعرض 10 طرق رئيسية للمكتبة مع شرح مفصل وأمثلة.

\n\n

1. AF.request() — طلب HTTP أساسي

\n

ما يفعله: يرسل طلب HTTP بأي طريقة (GET, POST, PUT, DELETE إلخ) إلى عنوان URL محدد.

\n

المعلمات:

\n
    \n
  • _ url: URLConvertible — عنوان URL أو سلسلة نصية لعنوان URL.
  • \n
  • method: HTTPMethod = .get — طريقة HTTP (get, post, put, delete, patch وغيرها).
  • \n
  • parameters: Parameters? = nil — قاموس معاملات الطلب.
  • \n
  • encoding: ParameterEncoding = URLEncoding.default — طريقة ترميز المعاملات.
  • \n
  • headers: HTTPHeaders? = nil — رؤوس الطلب.
  • \n
  • interceptor: RequestInterceptor? = nil — معترض لتعديل الطلب.
  • \n
\n

مثال:

\n
let parameters: [String: Any] = [\n    "userId": 1,\n    "title": "منشور جديد",\n    "body": "نص المنشور"\n]\n\nAF.request("https://jsonplaceholder.typicode.com/posts",\n           method: .p                    

توصيات