حل مشكلة ‘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
.
-
تنفيذ تسلسل تلقائي للأرقام في Excel25/03/2024
-
بناء مدونة قوية باستخدام Laravel 527/01/2024
لحل هذه المشكلة، يتعين عليك تمرير قيمة من النوع المناسب، وليس قيمة من نوع العدد الصحيح. على سبيل المثال، إذا أردت استخدام الأولوية الافتراضية، يمكنك استخدام .default
بدلاً من القيمة الرقمية. لذلك، سيكون الكود الصحيح على النحو التالي:
swiftDispatchQueue.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
. على سبيل المثال:
swiftDispatchQueue.global(qos: .default).async {
// تنفيذ العمليات هنا
}
في هذا المثال، تم تحديد جودة الخدمة كـ default
، والتي تعتبر الأولوية القياسية للمهام.
بهذا، يمكنك الآن إنشاء انتظار للتنفيذ بنجاح دون وجود الخطأ السابق، مما يساعد في تنظيم وتنفيذ المهام في تطبيقك بكفاءة أكبر وبطريقة صحيحة مع لغة البرمجة Swift.