Avatar ·

ما هو null/nil في Swift وكيفية التعامل معه؟

مرحبًا بالجميع! أتعلم Swift وواجهت مفهوم null/nil. في لغات أخرى (مثل Java, C#) اعتدت على مراجع null و NullPointerException. لكن في Swift، كما فهمت، nil ليس مؤشرًا، بل غياب قيمة للأنواع الاختيارية (Optional).

لدي مثال بسيط: أحاول الحصول على اسم مستخدم من قاموس، لكن إذا لم يكن المفتاح موجودًا — يتعطل التطبيق.

let user: [String: Any] = ["name": "Alice"]
let name = user["age"] as! String // تعطل إذا لم يكن المفتاح موجودًا
print(name)

جربت استخدام if let و guard let، لكني لا أفهم تمامًا كيفية التعامل مع nil بشكل صحيح في مواقف مختلفة. مثلًا:

  • ما الفرق بين Optional و forced unwrapping؟
  • متى أستخدم ?? (nil-coalescing) بدلاً من if let؟
  • هل يمكن لمتغير عادي (غير Optional) أن يكون nil؟
  • كيف أتجنب الأعطال عند العمل مع JSON و Codable؟

أتوقع شرحًا واضحًا لفلسفة nil في Swift وأفضل الممارسات (best practices) للعمل الآمن معها.