مكتبة Swift القياسية (iOS/macOS): نظرة شاملة
مكتبة Swift القياسية هي الأساس الذي يُبنى عليه كل التطوير لنظامي iOS و macOS و watchOS و tvOS. وهي توفر للمطور مجموعة من أنواع البيانات الأساسية والبروتوكولات والهياكل والدوال اللازمة للعمل اليومي. على عكس الأطر الخارجية (مثل UIKit أو SwiftUI)، فإن المكتبة القياسية هي جزء من لغة Swift نفسها ومتاحة في أي مشروع دون استيرادات إضافية. في هذه المقالة، سنقوم بتحليل المكونات الرئيسية للمكتبة بالتفصيل.
أنواع البيانات الأساسية
تتضمن مكتبة Swift القياسية جميع الأنواع البدائية التي تستخدمها يوميًا:
- Int, Float, Double — أنواع رقمية بدقة مختلفة.
- Bool — نوع منطقي (true/false).
- String — للعمل مع النصوص.
- Character — حرف Unicode واحد.
مثال على العمل مع السلاسل النصية يوضح قوة الدوال المضمنة:
import Foundation
let greeting = "مرحبًا، Swift!"let uppercased = greeting.uppercased()let containsWord = greeting.contains("Swift")
print(uppercased) // "مرحبًا، SWIFT!"print(containsWord) // true
// سلاسل نصية متعددة الأسطرlet multiline = """هذا هو السطر الأول.هذا هو السطر الثاني."""print(multiline)المجموعات: Array, Set, Dictionary
توفر المكتبة ثلاثة أنواع رئيسية من المجموعات، محسّنة لمهام مختلفة:
- Array — قائمة مرتبة من العناصر يمكن الوصول إليها عبر الفهرس.
- Set — مجموعة غير مرتبة من القيم الفريدة.
- Dictionary — مجموعة من أزواج "مفتاح-قيمة".
مثال على استخدام الأنواع الثلاثة:
// Arrayvar numbers: [Int] = [1, 2, 3, 4, 5]numbers.append(6)numbers.sort(by: >)
// Setvar uniqueNames: Set<String> = ["Alice", "Bob", "Charlie"]uniqueNames.insert("Alice") // لن يتم إضافتها لأنها موجودة بالفعل
// Dictionaryvar capitals: [String: String] = [ "روسيا": "موسكو", "الولايات المتحدة": "واشنطن"]capitals["فرنسا"] = "باريس"
print(numbers) // [6, 5, 4, 3, 2, 1]print(uniqueNames) // ["Charlie", "Alice", "Bob"]print(capitals) // ["روسيا": "موسكو", "الولايات المتحدة": "واشنطن", "فرنسا": "باريس"]الأنواع الاختيارية (Optionals)
إحدى الميزات الرئيسية في Swift هي التعامل الآمن مع القيم المفقودة من خلال Optional. وهذا يسمح بتجنب العديد من أخطاء وقت التشغيل الشائعة في اللغات الأخرى.
الطرق الرئيسية للعمل مع الأنواع الاختيارية:
- الربط الاختياري (Optional Binding) (
if let,guard let) - فك التغليف الإجباري (Force Unwrapping) (فقط إذا كنت متأكدًا من وجود القيمة)
- عامل الدمج مع القيمة nil (Nil-Coalescing Operator) (
??) - التسلسل الاختياري (Optional Chaining)
var username: String? = "JohnDoe"
// الربط الاختياريif let name = username { print("مرحبًا، \\(name)!\")} else { print("الاسم غير محدد")}
// الدمج مع القيمة nillet displayName = username ?? "ضيف"print(displayName)
// التسلسل الاختياريlet count = username?.count ?? 0print("طول الاسم: \\(count)")البروتوكولات والإضافات
مكتبة Swift القياسية مبنية على البروتوكولات. البروتوكولات الرئيسية التي ستستخدمها:
Equatable— لمقارنة الكائناتHashable— للاستخدام في Set و DictionaryComparable— للترتيبCodable— للتسلسل/إلغاء التسلسل (JSON, Property List)Collection— البروتوكول الأساسي لجميع المجموعات
مثال على تطبيق بروت