Swift میں Associated Values: یہ کیا ہے، نحو اور مثالیں

مصنف: IT Sectr اشاعت: 2026-06-17 مطالعے کا وقت: 6 منٹ

Associated Values — ایک Swift میکانزم جو ہر enum کیس میں انفرادی طور پر صوابدیدی ڈیٹا منسلک کرنے کی اجازت دیتا ہے۔ raw values کے برعکس، جہاں تمام کیسز کی ایک ہی قسم کی قدریں ہوتی ہیں، associated values ہر کیس کے لیے قسم اور مقدار میں مختلف ہو سکتی ہیں۔ Apple Documentation, 2026 کے مطابق، اضافی ریپر اقسام بنائے بغیر ڈومین کو درست طریقے سے ماڈل کرنے کے لیے یہ ایک اہم صلاحیت ہے۔

اہم نکات

  • Associated Values — enum کیس سے منسلک انفرادی ڈیٹا
  • اقسام associated values ہر کیس کے لیے مختلف ہو سکتی ہیں
  • اخراج switch یا if case میں ویلیو بائنڈنگ کے ذریعے ہوتا ہے
  • باہمی اخراج — associated values raw values کے ساتھ مطابقت نہیں رکھتیں
  • عملی — غلطیوں، استفسار کے نتائج اور UI حالتوں کی ماڈلنگ

Associated Values کیا ہیں؟

Associated Values اضافی معلومات ہیں جو ایک enum کیس اپنے ساتھ ذخیرہ کر سکتا ہے۔ raw values کے برعکس، جو اعلان کی سطح پر مقرر ہوتی ہیں، associated values enum مثال بناتے وقت سیٹ کی جاتی ہیں۔

ایک ادائیگی کا طریقہ ماڈل کرنے کا تصور کریں: creditCard کیس آخری 4 ہندسے اور میعاد ختم ہونے کی تاریخ ذخیرہ کر سکتا ہے، جبکہ applePay کیس کچھ بھی ذخیرہ نہیں کرتا۔ associated values کے ساتھ، یہ ذیلی طبقات یا اختیاری فیلڈز کے بغیر قدرتی طور پر لاگو ہوتا ہے۔

Apple دستاویزات کے مطابق، associated values enum کو سادہ مستقلات کے ایک مجموعے سے ایک الجبری ڈیٹا ٹائپ (sum type) میں تبدیل کر دیتی ہیں، جو فعال زبانوں کی خصوصیت ہے۔ یہ کوڈ کے اظہار کو نمایاں طور پر بڑھاتا ہے۔

Associated values کا نحو

Associated Values کو کیس کے بعد قوسین میں اعلان کیا جاتا ہے، جس میں پیرامیٹر کے نام اور اقسام بتائے جاتے ہیں، جیسے فنکشنز میں۔

swift
enum MediaFile {
    case image(width: Int, height: Int, format: String)
    case video(duration: Double, codec: String)
    case audio(bitrate: Int)
    case unknown
}

مثال بناتے وقت، associated values کو دلائل کے طور پر منتقل کیا جاتا ہے:

swift
let photo = MediaFile.image(width: 1920, height: 1080, format: "jpeg")
let clip = MediaFile.video(duration: 120.5, codec: "h264")

Swift associated values کی تعداد یا اقسام پر پابندیاں عائد نہیں کرتا۔ آپ associated values کے اندر generics، closure فنکشنز اور دیگر enum استعمال کر سکتے ہیں۔ یہ پیچیدہ نیسٹڈ ڈھانچے بنانا ممکن بناتا ہے۔

associated values کے پیرامیٹر کے نام مثال بناتے وقت دلیل لیبل کے طور پر استعمال ہوتے ہیں — یہ کوڈ پڑھنے کی صلاحیت کو بہتر بناتا ہے۔ switch کے ذریعے اخراج کے وقت، نام دستاویزات کے طور پر کام کرتے ہیں، ہر قدر کے معنی واضح کرتے ہیں۔ یہ نقطہ نظر کوڈ کو خود دستاویز کرنے والا بناتا ہے اور ڈیٹا مماثلت کے وقت غلطیوں کے امکان کو کم کرتا ہے۔ یہ بڑی iOS ایپلیکیشنز کی ٹیم ڈویلپمنٹ میں خاص طور پر قیمتی ہے۔

Switch کے ساتھ associated values

Switch associated values نکالنے کا بنیادی طریقہ ہے۔ اقدار let یا var کے ذریعے مستقلات یا متغیرات سے منسلک ہوتی ہیں۔

swift
func describe(_ file: MediaFile) -> String {
    switch file {
    case .image(let w, let h, let fmt):
        return "Image \(w)x\(h) .\(fmt)"
    case .video(let duration, let codec):
        return "Video \(duration)s, \(codec)"
    case .audio(let bitrate):
        return "Audio \(bitrate)kbps"
    case .unknown:
        return "Unknown format"
    }
}

Swift جزوی مماثلت کو سپورٹ کرتا ہے — آپ associated values کے لیے مخصوص اقدار بتا سکتے ہیں:

swift
switch file {
case .image(let w, let h, "png"):
    print("PNG تصویر \(w)x\(h)")
case .image(1920, 1080, _):
    print("Full HD تصویر")
default:
    break
}

وائلڈ کارڈ (_) کا استعمال غیر ضروری associated values کو نظرانداز کرنے کی اجازت دیتا ہے، اور کیسز میں موجود مستقلات آپ کو مخصوص اقدار سے مماثلت چیک کرنے دیتے ہیں۔

Associated Values بمقابلہ Raw Values

بہت سے ابتدائی ڈویلپر associated values کو raw values کے ساتھ الجھاتے ہیں۔ یہ مختلف استعمال کے معاملات کے ساتھ مختلف میکانزم ہیں۔

خصوصیتRaw ValuesAssociated Values
ڈیٹا کی قسمتمام کیسز کے لیے ایک قسمہر کیس کے لیے مختلف اقسام
تفویض کا وقتenum اعلان پرمثال بنانے پر
لازمیتمام کیسز کی ایک قدر ہوتی ہےکچھ کیسز بغیر اقدار کے ہو سکتے ہیں
مطابقتباہمی طور پر خارج — ایک ساتھ استعمال نہیں کیا جا سکتا

Swift Evolution کے مطابق، associated values کو Swift 2.0 میں enum کے دوبارہ ڈیزائن کے حصے کے طور پر متعارف کرایا گیا تھا۔ وہ اقسام کے لیے الجبری نقطہ نظر فراہم کرتی ہیں، جہاں ہر کیس اپنے دستخط کے ساتھ ایک علیحدہ کنسٹرکٹر ہے۔

Associated values کی عملی مثالیں

Associated Values حقیقی iOS منصوبوں میں فعال طور پر استعمال ہوتی ہیں۔ آئیے تین عام منظرناموں پر غور کریں۔

API جوابات کی ماڈلنگ

swift
enum APIResponse<T: Codable> {
    case success(data: T, cached: Bool)
    case failure(error: Error, retryAvailable: Bool)
    case loading(progress: Double)
}

UI اسٹیٹ مشین

swift
enum ViewState<T> {
    case idle
    case loading(message: String)
    case loaded(data: T)
    case error(message: String, retryAction: () -> Void)
}

associated values کے ساتھ، enum اسٹیٹ مشینوں کے لیے ایک طاقتور ٹول بن جاتا ہے: ہر کیس ایک حالت ہے، associated values اس حالت کے پیرامیٹرز ہیں۔ کمپائلر اس بات کی ضمانت دیتا ہے کہ تمام ٹرانزیشنز کو ہینڈل کیا گیا ہے۔

if case اور guard case کے ذریعے اخراج

switch کے بغیر کسی ایک کیس کو چیک کرنے کے لیے، if case یا guard case استعمال کریں۔ جب آپ کو صرف ایک آپشن ہینڈل کرنے کی ضرورت ہو تو یہ زیادہ کمپیکٹ ہے۔

swift
let error = NetworkError.timeout(seconds: 30)

if case .timeout(let seconds) = error {
    print("درخواست \(seconds)s کے بعد ختم ہو گئی")
}

guard case .httpError(let code, _) = error else {
    return
}
print("\(code) کوڈ کے ساتھ HTTP خرابی")

اکثر پوچھے گئے سوالات

کیا enum بغیر پیرامیٹرز کے associated values رکھ سکتا ہے؟

جی ہاں، ایک کیس میں associated values نہیں ہو سکتی — مثال کے طور پر، case unknown۔ اس طرح کے کیسز اضافی ڈیٹا کے بغیر عام enum کیسز کی طرح برتاؤ کرتے ہیں۔ یہ مارکر حالتوں کے لیے آسان ہے۔

associated values والے دو enum کا موازنہ کیسے کریں؟

Swift associated values والے enum کے لیے خود کار طریقے سے Equatable پیدا نہیں کرتا (Swift 4.2+ سے پہلے)۔ واضح Equatable نفاذ شامل کریں یا ہر کیس کا ترتیب وار موازنہ کرنے کے لیے switch استعمال کریں۔

کیا تکراری enum میں associated values استعمال کی جا سکتی ہیں؟

جی ہاں، indirect enum میں associated values درخت اور منسلک فہرستیں بنانے کی ایک معیاری تکنیک ہے۔ ایک کیس میں indirect سے نشان زد ایک ہی قسم کی associated value ہو سکتی ہے۔

Associated values struct میں اختیاری خصوصیات سے کیسے مختلف ہیں؟

Associated Values ٹائپ محفوظ ہیں — ہر کیس کی ضمانت ہے کہ اس کا صرف اپنا ڈیٹا ہے۔ اختیاری خصوصیات والے struct میں، ہر مثال میں تمام فیلڈز ہوتے ہیں اور رن ٹائم nil جانچ کی ضرورت ہوتی ہے۔

کیا associated values Codable کو سپورٹ کرتی ہیں؟

Swift associated values والے enum کے لیے خود کار طریقے سے Codable پیدا نہیں کرتا۔ حسب ضرورت کوڈنگ کیز استعمال کرتے ہوئے کیسز پر switch کے ذریعے encode اور decode کا دستی نفاذ ضروری ہے۔

خلاصہ

  • Associated Values — ہر enum کیس میں مختلف ڈیٹا منسلک کرنے کا میکانزم
  • نحو — فنکشنز کی طرح کیس کے بعد قوسین میں پیرامیٹر کا اعلان
  • اخراج — let بائنڈنگ یا if case کے ساتھ switch کے ذریعے
  • غیر مطابقت raw values کے ساتھ — صرف ایک استعمال کریں
  • Generics associated values میں enum کو عالمی کنٹینر بناتے ہیں
  • اسٹیٹ مشین — iOS میں associated values کے لیے ایک عام منظرنامہ

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں