البرمجة

حل مشكلة ‘Can not convert value of type int’ في Swift 3

عند استخدام لغة البرمجة Swift 3.0، قد تواجه بعض المشاكل عند محاولة إنشاء انتظار للتنفيذ (dispatch queue) باستخدام الأولوية العالمية للانتظار (global queue priority). واحدة من الأخطاء الشائعة التي قد تواجهها هي: “لا يمكن تحويل قيمة من النوع ‘int’ إلى النوع المتوقع ‘DispatchQueue.GlobalQueuePriority'”. هذا الخطأ يحدث عند محاولة تمرير قيمة من نوع العدد الصحيح (int) بدلاً من نوع الأولوية المتوقعة.

عادةً، عند استخدام دالة DispatchQueue.global(priority:) لإنشاء انتظار للتنفيذ، يُتوقع تمرير قيمة من نوع DispatchQueue.GlobalQueuePriority كوسيلة لتحديد أولوية الانتظار. ومن الأمثلة على قيم الأولوية تشمل: .high، .default، .low، و .background.

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

swift
DispatchQueue.global(qos: .default).async { // تنفيذ العمليات هنا }

ملاحظة: تم استخدام qos بدلاً من priority في الدالة DispatchQueue.global في Swift 3.0 وما بعدها.

باستخدام هذا التعديل، يجب أن يتم إصلاح الخطأ الذي تواجهه، ويمكنك الآن استخدام الأنتظار للتنفيذ بنجاح دون وجود أخطاء.

المزيد من المعلومات

بالطبع، دعني أواصل شرح هذا الموضوع بالتفصيل.

عندما تقوم بإنشاء انتظار للتنفيذ في لغة البرمجة Swift، يمكنك استخدام الدوال المتاحة في المكتبة القياسية مثل DispatchQueue.global(qos:) لإنشاء انتظار للتنفيذ على الخطوط الداخلية للتطبيق. تسمح هذه الدوال بتحديد مستوى الأولوية للمهام التي سيتم تنفيذها على الأنتظار للتنفيذ.

مع تحديثات Swift إلى الإصدارات الأحدث، تغيرت بعض الطرق المستخدمة لإنشاء الأنتظار للتنفيذ، وهذا ما تمثل فيه رسالة الخطأ التي واجهتك. في Swift 3.0 والإصدارات اللاحقة، تم استبدال مصطلح “priority” بـ “qos” الذي يعني “مستوى جودة الخدمة” (Quality of Service)، وذلك لتوضيح أنه يتم استخدامه لتحديد جودة الخدمة المطلوبة للمهمة.

لذا، عند استخدام DispatchQueue.global(qos:)، يجب عليك تمرير قيمة من نوع DispatchQoS بدلاً من القيم العددية المباشرة. تحتوي DispatchQoS على خيارات مثل default، background، userInitiated و userInteractive التي تحدد جودة الخدمة المطلوبة للمهمة.

وبناءً على هذا، يمكنك تحديد الأولوية المناسبة لمهمتك باستخدام قيمة من DispatchQoS. على سبيل المثال:

swift
DispatchQueue.global(qos: .default).async { // تنفيذ العمليات هنا }

في هذا المثال، تم تحديد جودة الخدمة كـ default، والتي تعتبر الأولوية القياسية للمهام.

بهذا، يمكنك الآن إنشاء انتظار للتنفيذ بنجاح دون وجود الخطأ السابق، مما يساعد في تنظيم وتنفيذ المهام في تطبيقك بكفاءة أكبر وبطريقة صحيحة مع لغة البرمجة Swift.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر