مساحة اعلانية

آخر المواضيع

إنشاء تطبيق الطقس مع التوقعات - التكامل API.



مقــــــدمــــة

في الدفعة الأولى من هذه السلسلة ، وضعنا أساس وقاعدة  مشروع تطبيق الطقس. بحيث يمكن للمستخدمين إضافة موقعهم الحالي و التبديل بين المواقع.
 في هذا البرنامج التعليمي سوف نستخدم مكتبة afnetworking  للتفاعل مع توقعات API و الطلب على البيانات المتعلقة بالطقس من الموقع المحدد حاليًا.

إذا كنت تريد أن تتابعنا، فأنت تحتاج إلى تطبيق التوقعات API.

 يمكنك الحصول على مفتاح التسجيل كمطور في تطبيق التوقعات. وقد جعلت التسجيل مجاناً حتى أشجع الناس على خوض تجربة خدمة الطقس المتوقعة. فتجد واجهة API (واجهة برمجة التطبيقات) في الجزء السفلي من اللوحة (الشكل 1)..




1. subclassing afhttpclient
كما كتبت سابقا في هذه المادة، سنستخدم مكتبة  afnetworking  للتواصل مع توقعات API. هناك العديد من الخيارات عند التعامل مع afnetworking على التطبيق المستقبلي سوف يتم اختيار afhttpclient class. تم تصميم هذه الفئة المستهلكة من خدمات الويب مثل التنبؤ API. وعلى الرغم من أننا لن ندخل الا على نقطة نهاية واحدة فى التطبيق API (واجهة برمجة التطبيقات)، فإنه لا يزال مفيدا جدا أن نستفيد من  afhttpclient كما ستتعلم في لحظات قليلة.

يوصى بإنشاء الفئة afhttpclient  لكل خدمة ويب. لأننا بالفعل قد أضفنا afnetworking إلى المشروع التعليمي السابق، ولذا يمكننا أن نبدأ فوراً فى subclassing afhttpclient.

الخطوة 1: قم بإنشاء فئة.
قم بإنشاء فئةObjective-C جديدة, وأعطها اسم  mtforecastclient واجعلها فئة فرعية من afhttpclient (الشكل 2).



الخطوة 2: إنشاء العنصر المنفرد.
سوف نتبنى عنصرا منفردا كى يسهل استخدام الدرجة mtforecastclient في المشروع. وهذا يعني أن حالة واحدة فقط من تلك الفئة سوف تكون صالحة للاستخدام في أي وقت خلال فترة التطبيق.
وهناك احتمال أن تكون مألوف مع النمط المنفرد, حيث أن هذا النمط هو نمط مشترك في العديد من لغات البرمجة المعروفة. وللوهلة الأولى، قد يظهر العنصر المنفرد أنه ملائم جدا، ولكن هناك عدد من المحاذير التى ينبغى عليك مراقبتها ومعرفتها. يمكنك معرفة المزيد عن طريق قراءة هذا المقال الممتاز المكتوب بواسطة Matt Gallagher . 

خلق وإنشاء العنصر المنفرد هو هدف مطلوب فى لغة البرمجة Objective-C.
 ابدأ بالإعلان عن طريقة الفئة  mtforecastclient  كى تعطى نظرة عامة عن العنصر المنفرد (انظر أدناه).

#import "AFHTTPClient.h"

@interface MTForecastClient : AFHTTPClient

#pragma mark -
#pragma mark Shared Client
+ (MTForecastClient *)sharedClient;

@end

تنفيذ sharedclient قد يبدو صعبا في البداية ولكن لن يكون بهذه الصعوبة بمجرد فهم ما يحدث.
فى بادىء الأمر تقوم بتعريف كنغيرين ثابتين، (1) predicate من النوع dispatch_once_t, والآخرsharedclient   من النوع _mtforecastclient. كما يشير الاسم، الأصلية "Predicate" هي أن نستخدمها فى مزيج مع الوظيفة dispatch_once . عند التعامل مع المتغير من نوع dispatch_once_t، ومن المهم أن يتم تعريفه  بشكل ثابت. أما المتغير الثاني، _sharedclient، فإنه يقوم بتخزين المرجع إلى العنصر المنفرد.

إن وظيفة dispatch_once تعطى مؤشرا إلى   dispatch_once_t Structure ، إحدى جماليات dispatch_once هو أنها ستنفذ القالب مرة واحدة فقط من عمر التطبيق وهو ما نريده بالضبط. إن وظيفة dispatch_once لا تستخدم كثيرا، ولكن هذا بالتأكيد هو واحد منهم . في القالب الذي نمرره إلى dispatch_once ، ننشئ العنصر المنفرد ونقوم بتخزين مرجع فى _sharedclient.
 من الأسلم أن تستدعى alloc  بشكل منفصل حتى تتجنب حالة السباق التي يمكن أن تؤدي إلى طريق مسدود. euh ... ؟ يمكنك قراءة المزيد حول التفاصيل الجوهرية للمجموعة .

 (MTForecastClient *)sharedClient {    static dispatch_once_t predicate;    static MTForecastClient *_sharedClient = nil;     dispatch_once(&predicate, ^{        _sharedClient = [self alloc];        _sharedClient = [_sharedClient initWithBaseURL:[self baseURL]];    });     return _sharedClient;}

الكــاتــب

    • مشاركة

ليست هناك تعليقات:

جميع الحقوق محفوظة لــ الشبح للمعلوميات 2019 ©