التسجيل وassert وprecondition وfatalError
سجّل الحالة باستخدام print/debugPrint ، واختر بين assert (للتصحيح فقط) و precondition (يُفحص في إصدار الإنتاج) و fatalError (يؤدي إلى التعطّل) لفرض الثوابت.
التسجيل وassert وprecondition وfatalError درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 2 من أصل 2. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 2 دروس في المجموع.
صندوق أدوات التشخيص
استخدموا التسجيل البسيط لرؤية الحالة، وفرضوا صحة الافتراضات باستخدام assert وprecondition وfatalError.
- assert: فحوصات تقتصر على التصحيح
- precondition: يُفحص أيضًا في إصدار Release
- fatalError: إيقاف التنفيذ فورًا
تسجيل خفيف
يقدّم print مخرجات سهلة القراءة، بينما يعرض debugPrint تفاصيل أكثر، وهو مفيد أثناء تصحيح الأخطاء.
let user = ["name": "Ana", "role": "admin"]
print("User:", user) // user-friendly
debugPrint("User:", user) // includes type details when available
let point = (x: 3, y: 5)
print("Point:", point)
debugPrint("Point:", point)assert (للتصحيح فقط)
يوقف assert البرنامج في نمط Debug عندما يكون الشرط خاطئًا، ويُزال في بنى Release المحسّنة.
// Even numbers only (demo)
func half(of x: Int) -> Int {
assert(x % 2 == 0, "Expected even number, got \(x)")
return x / 2
}
print(half(of: 8)) // OK in Debug/Release
// In Debug, failing the assert would stop and print the message.
// In Release, assert checks are disabled by default.precondition (يُفحص في Release)
يتحقق precondition من المتطلبات المهمة في نمطي Debug وRelease. استخدموه لأخطاء المبرمج التي يجب ألا تحدث مطلقًا.
// Safe divide with required precondition
func safeDivide(_ a: Int, by b: Int) -> Int {
precondition(b != 0, "Divider must be nonzero")
return a / b
}
print(safeDivide(10, by: 2)) // 5
// If called with 0, precondition fails in Debug and Release.fatalError (إيقاف فوري)
يوقف fatalError التنفيذ فورًا ويعرض رسالة. استخدموه لمسارات التعليمات البرمجية التي يتعذر الوصول إليها أو الوظائف غير المنفذة أثناء التطوير.
enum FileKind { case text, binary }
func open(kind: FileKind) {
switch kind {
case .text:
print("Open text mode")
case .binary:
print("Open binary mode")
// If we ever add a new case and forget to handle it, we could use:
// default: fatalError("Unsupported file kind")
}
}
open(kind: .text)متى تستخدم كل أداة
الإرشادات:
- استخدموا print/debugPrint للسجلات السريعة، ثم أزيلوها لاحقًا أو اجعلوا تشغيلها مشروطًا بالأعلام.
- استخدموا assert لفحوصات المطوّرين المقتصرة على التصحيح.
- استخدموا precondition عندما يجب ألا يستمر البرنامج في أي بنية إذا فشل أحد المتطلبات.
- استخدموا fatalError للمسارات التي يتعذر الوصول إليها أو غير المنفذة.
تشخيص يُفحص في Release
تحقق سريع: ما أداة التشخيص التي يظل فحصها فعالًا في بنى Release؟
الخلاصة
الخلاصة: سجّلوا باستخدام print/debugPrint، واحموا الثوابت باستخدام assert في وضع التصحيح وprecondition في Release أيضًا، واستخدموا fatalError للحالات التي يتعذر الوصول إليها فعلًا.
الأسئلة الشائعة
هل درس «التسجيل وassert وprecondition وfatalError» مجاني؟
نعم — نص درس «التسجيل وassert وprecondition وfatalError» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 2 دروس في المجموع.
ماذا ستتعلم في «التسجيل وassert وprecondition وfatalError»؟
سجّل الحالة باستخدام print/debugPrint ، واختر بين assert (للتصحيح فقط) و precondition (يُفحص في إصدار الإنتاج) و fatalError (يؤدي إلى التعطّل) لفرض الثوابت. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 2.
كم من الوقت يستغرق درس «التسجيل وassert وprecondition وfatalError»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات XCTest (الأهداف وبيانات الاختبار)
- التسجيل وassert وprecondition وfatalError