بروتوكولات سويفت واستخدامها لارسال البيانات بين الView Controllers - الجزء الثاني

Ammar AlTahhanمنذ 7 سنوات

بسم الله الرحمن الرحيم

 

مقدمة

استعرضنا في الجزء الأول طريقة ارسال البيانات بين الViews عن طريق انشاء Reference للView المستقبلة للبيانات وتغيير قيم متغيراتها.

في هذه المقالة، سنتعرف على ماهية البروتوكولات في سويفت وطريقة استخدامها لنقل البينات من أي View الى View اخر.

 

أولا: ماهو البروتوكول

اقتباس

البروتوكول هو عبارة عن مخطط (Blueprint) يحتوي على ميثودز، وخصائص ومتطلبات اخرى للقيام بمهمة معينة. يمكن لأي كلاس ان يتبنى أي بروتوكول ليقوم باضافة تعريف لهذه المتطلبات.

لتفهم بالبروتوكول بشكل صحيح، فكر به على أنه طريقة لتعريف ما يمكن للمتغير أن يفعله، عكس الكلاسات التي تعرف ماهية المتغير.

 

ثانيا: نقل البيانات بواسطة البروتوكول

في الجزء الأول رأينا كيف نقوم بنقل البيانات بين الView Controllers الى الأمام، والآن سنستعمل البروتوكول لنقل البيانات للView السابقة

سنقوم أولا بعمل السيت اب في الStoryboard كالتالي (سنسمي الView الأولى InitialVC والثانية FinalVC):

5995eead7080f_ScreenShot2017-08-17at9_53_14PM.thumb.png.264bc032f74f1d101e2af4fc86031ce4.png

 

والآن ضمًن الView الاولى بداخل Navigation Controller لتصبح كالتالي:

5995eeb3a084f_ScreenShot2017-08-17at9_54_09PM.thumb.png.1bbfba4ae428e1cc8cea3b5dfb2762ac.png

 

سنقوم بانشاء Segue بين الView الأولى والثانية:

GIF2.thumb.gif.9095d71a87bf86d51b259b9996c1b087.gif

 

قم باضافة زر لكل View كالتالي: لا تنسى اضافة الSegue identifier لأننا سنستعمله لاحقا

5995eeb931967_ScreenShot2017-08-17at10_00_50PM.thumb.png.22b3c00722730a451c9c5ceaf564dcf9.png

 

والآن لننهي السيت أب، أضف الIBActions في الViewControllers لتصبح كالتالي:

5995eebd15784_ScreenShot2017-08-17at10_05_05PM.thumb.png.ce0f03d8c1fbe1cadb5f58836971bba7.png

 

كل ماسبق كان مجرد تجهيز للتالي

سنقوم الآن بتعريف البروتوكول والمتطلبات

 

وانت في كلاس الFinalVC:

  1. قم باضافة تعريف للبروتوكول باعلى الصفحة يحتوي على ميثود finishPassing بباراميتر String
  2. قم بتعريف متغير delegate من نفس نوع البروتوكول
  3. في ميثود الIBAction، قم باستخدام المتغير لنقل البيانات التي تريد نقلها الى الView الأولى (في هذا المثال نقلت سترينق)

سيصبح كلاس الFinalVC يبدو كالتالي:

5995eec61c9bd_ScreenShot2017-08-17at10_08_04PM.thumb.png.4b418e10c3b1c73fec5ffa13f09059b2.png

1) أولا قمنا بانشاء بروتوكول (أو blueprint)، يحتوي على الميثود التي سنستعملها لاستقبال البيانات مستقبلا في الكلاس الأول

2) قمنا بانشاء متغير من نفس نوع البروتوكول ليحمل البيانات التي نريد ارسالها

3) عند الضغط على زر العودة، سنزود المتغير بالبيانات التي نريد نقلها الى الView الأولى

 

الى الآن، المتغير delegate لا يعلم الى اي كلاس سيقوم بنقل البيانات التي يحملها معه

سنقوم الآن بتبني البروتوكول في الكلاس الأول وتحديده كنقطة الوصول بالنسبة للمتغير

 

وانت في كلاس الInitialVC:

  1. اضف البروتوكول الى الكلاس الأول لتبنيه
  2. اضف الميثود prepareForSegue واستخدمها لتحديد الكلاس الحالي كنقطة الوصول للمتغير delegate من الكلاس الأخير
  3. وأخيرا لتبني البروتوكول بشكل كامل وصحيح، أضف الميثود finishPassing واستخدمها للتعامل مع البيانات المنقولة من المتغير delegate

سيصبح كلاس InitialVC يبدو كالتالي:

5995eec13d491_ScreenShot2017-08-17at10_10_45PM.thumb.png.b94a969cc58179071f834cf2f3a3aa90.png

1) قمنا بتبني البروتوكول مبدئيا في الكلاس الأول

2) في الميثود prepareForSegue (التي سيتم استدعاءها قبل الانتقال الى الView الأخيرة)، قمنا باخبار المتغير delegate بان نقطة الوصول له هو الكلاس الحالي self

3) الى الآن ستلاحظ وجود error على الكلاس، لأنه يتوقع منك اضافة الميثود finishPassing التي ستتعامل مع البيانات التي ستصل من المتغير delegate، أضفناها وبداخلها طريقة للتعامل مع البيانات المنقولة عن طريق الparameter

 

والآن أصبحنا جاهزين للتجربة

GIF1.gif.a1d0be2b4dd9fee36c5cb5de1e3befb0.gif

لاحظ طباعة السترينق من الكلاس الأول كما حددنا في الميثود finishPassing، يمكنك أنت أن تقوم بالتعامل مع البيانات كما تشاء.

 

وصلنا الى نهاية موضوعنا اليوم، أترككم في حفظ الله ورعايته.

كلمات دليلية:
1
إعجاب
2778
مشاهدات
0
مشاركة
1
متابع
متميز
محتوى رهيب

التعليقات (1)

Mohammed Sabri:

السلام عليكم

لطفا استاذ .. هل هذه الاكواد مكتوبة بالجافا ؟

وما هو سويفت ؟ هل له علاقة بحوالات سويفت في المصارف ؟؟؟

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !