توليد UUID في iOS باستخدام Swift: دليل شامل للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو UUID ولماذا تحتاجه في تطبيق iOS؟

\n\n

تخيل أنك تقوم بإنشاء تطبيق للملاحظات. كل ملاحظة تحتاج إلى "جواز سفر" فريد لتمييزها عن غيرها. هذا الجواز في عالم البرمجة هو UUID (المعرف الفريد العالمي) — معرف فريد عالمي. في تطوير iOS باستخدام Swift، يعد توليد UUID مهمة أساسية ولكنها بالغة الأهمية، وسيواجهها كل مطور عاجلاً أم آجلاً.

\n\n

على Stack Overflow، حصد سؤال "توليد UUID على iOS باستخدام Swift" آلاف المشاهدات. لماذا؟ لأن حتى المبرمجين ذوي الخبرة يخلطون أحيانًا: أي فئة يجب استخدامها؟ هل نحتاج إلى استيراد مكتبات إضافية؟ أي UUID يُعتبر "صحيحًا"؟

\n\n

في هذه المقالة، سنشرح كل شيء من البداية. ستتعلم كيفية توليد UUID على iOS باستخدام Swift، وستفهم الفرق بين إصدارات UUID، وستتعلم كيفية تطبيقها عمليًا. هيا بنا!

\n\n

الأساسيات: كيفية توليد UUID في Swift بسطر واحد

\n\n

أسهل طريقة للحصول على UUID في iOS هي استخدام الفئة المدمجة UUID من إطار العمل Foundation. وهي متاحة "مباشرة" ولا تتطلب استيرادًا إضافيًا.

\n\n

مثال أساسي

\n\n
import Foundation\n\nlet myUUID = UUID()\nprint(myUUID.uuidString)\n// الإخراج: "E621E1F8-C36C-495A-93FC-0C247A3E6E5F"
\n\n

هذا كل شيء! لقد قمت للتو بتوليد UUID الإصدار 4 — معرف عشوائي من المرجح جدًا أن يكون فريدًا في الكون بأكمله. لاحظ الخاصية uuidString: فهي تُرجع سلسلة نصية بالتنسيق القياسي XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.

\n\n

ما بداخل UUID؟

\n\n

كائن UUID في Swift يخزن قيمة 128 بت. يمكنك الحصول عليها بشكلها الخام:

\n\n
let uuid = UUID()\nlet uuidBytes = uuid.uuid // (UInt8, UInt8, ..., UInt8) — مجموعة من 16 بايت\nprint(uuidBytes.0) // البايت الأول
\n\n

لكن عمليًا، غالبًا ما يتم العمل بالتمثيل النصي.

\n\n

UUID من سلسلة نصية: العملية العكسية

\n\n

أحيانًا يكون لديك سلسلة نصية UUID (مثلًا من قاعدة بيانات أو API)، وتحتاج إلى إنشاء كائن UUID للعمل معه. يتيح لك Swift ذلك عبر المُهيئ:

\n\n
let uuidString = "550e8400-e29b-41d4-a716-446655440000"\nif let uuid = UUID(uuidString: uuidString) {\n    print("تم إنشاء UUID بنجاح: \\(uuid)")\n} else {\n    print("تنسيق UUID غير صحيح")\n}
\n\n

لاحظ: المُهيئ يُرجع قيمة اختيارية. إذا كانت السلسلة لا تتوافق مع تنسيق UUID، ستحصل على nil. هذا يحمي كودك من البيانات غير الصحيحة.

\n\n

مقارنة UUID: كيفية التحقق من التطابق

\n\n

Swift يُطبق بروتوكول Equatable لـ UUID، لذا يمكن مقارنتها مباشرة:

\n\n
let uuid1 = UUID()\nlet uuid2 = UUID()\nlet uuid3 = uuid1\n\nprint(uuid1 == uuid2) // false (UUID مختلفان)\nprint(uuid1 == uuid3) // true (نفس الكائن)
\n\n

هذا مفيد للبحث عن التكرارات أو التحقق من وجود المعرف في مجموعة.

\n\n

UUID كمفتاح في القواميس والمجموعات

\n\n

الفئة UUID تُطبق أيضًا بروتوكول Hashable، مما يسمح باستخدامها كمفتاح في القواميس وعنصر في المجموعات:

\n\n
var userSessions: [UUID: String] = [:]\nlet sessionId = UUID()\nuserSessions[sessionId] = "جلسة مستخدم نشطة"\n\nlet allIds: Set<UUID> = [UUID(), UUID(), UUID()]\nprint(allIds.count) // 3
\n\n

هذه طريقة ممتازة لتنظيم البيانات إذا كنت بحاجة إلى مفاتيح فريدة مضمونة.

\n\n

ما هي إصدارات UUID؟ (ولماذا تهمك)

\n\n

يحدد معيار UUID عدة إصدارات. في iOS باستخدام Swift، يتم توليد UUID الإصدار 4 (العشوائي) افتراضيًا. ولكن ماذا عن الإصدارات الأخرى؟

\n\n
    \n
  • UUID v1 — يعتمد على الوقت

المدونات

توصيات الكتب