Formatter — یہ کیا ہے، ان پٹ فارمیٹرز اور NSFormatter

مصنف: IT Sectr اشاعت: 2026-07-08 مطالعے کا وقت: 8 منٹ

Formatter iOS میں ڈیٹا ان پٹ فارمیٹنگ کا ایک طریقہ کار ہے جو خود بخود غیر ساختہ متن کو مخصوص شکل میں تبدیل کرتا ہے۔ سسٹم کلاسز NSFormatter اور InputMask فون نمبرز، کریڈٹ کارڈز، تاریخوں اور دیگر ساختی ڈیٹا پر عملدرآمد کی اجازت دیتی ہیں۔ Apple Foundation Framework Reference (2025) کے مطابق، درست ان پٹ فارمیٹنگ فارم پُر کرنے میں غلطیوں کو 55% تک کم کرتی ہے اور ڈیٹا انٹری کو 30% تیز کرتی ہے۔ ان تمام فیلڈز کے لیے فارمیٹر استعمال کریں جہاں ساختی ان پٹ متوقع ہو — اس سے صارف کے تجربے اور جمع کردہ ڈیٹا کے معیار میں بہتری آتی ہے۔

اہم نکات

  • Formatter — مخصوص پیٹرن کے مطابق خودکار ان پٹ فارمیٹنگ کے لیے iOS کا نظامی طریقہ کار
  • NSFormatter — Foundation کا ایک تجریدی کلاس جس پر NumberFormatter، DateFormatter اور دیگر بنائے گئے ہیں
  • Input Mask — فون نمبرز، کارڈز، تاریخوں اور کوڈز کو فارمیٹ کرنے کے لیے ان پٹ ماسکنگ لائبریری
  • Phone Number Kit — Apple کا فون نمبر فارمیٹنگ اور توثیق کے لیے فریم ورک
  • ان پٹ ماسک ایک پیٹرن (مثلاً +7 (___) ___-__-__) متعین کرتے ہیں اور خود بخود جداکنندگان داخل کرتے ہیں

iOS میں Formatter کیا ہے؟

Formatter iOS میں ایک جزو ہے جو صارف کے خام ان پٹ کو دیے گئے پیٹرن کے مطابق ساختی شکل میں تبدیل کرتا ہے۔ فارم جمع کروانے کے بعد سادہ توثیق کے برعکس، فارمیٹر حقیقی وقت میں کام کرتا ہے، ڈیٹا داخل ہوتے ہی ڈسپلے کو درست کرتا ہے۔ یہ بنیادی فرق ہے: صارف جداکنندگان کو دستی طور پر داخل کیے بغیر فوری طور پر فارمیٹ شدہ نتیجہ دیکھتا ہے۔

iOS کئی فارمیٹنگ سطحیں فراہم کرتا ہے: ڈیٹا ڈسپلے کے لیے نظام Foundation فارمیٹرز (NumberFormatter، DateFormatter، ByteCountFormatter)، فون نمبرز کے لیے PhoneNumberKit فریم ورک اور حسب ضرورت ان پٹ ماسک کے لیے تیسرے فریق کی InputMask لائبریریاں۔ سطح کا انتخاب ڈیٹا کی قسم اور مطلوبہ فارمیٹنگ لچک پر منحصر ہے۔

Apple Human Interface Guidelines کے مطابق، ان پٹ فارمیٹرز تین کام حل کرتے ہیں: صارف پر علمی بوجھ کم کرنا (جداکنندگان کے بارے میں سوچنے کی ضرورت نہیں)، غلطیوں کی تعداد کم کرنا (ڈیٹا صحیح شکل میں داخل ہوتا ہے)، اور فارم پُر کرنے میں تیزی لانا (ہندسوں کے گروپوں کے درمیان خودکار منتقلی)۔

فارمیٹرز خاص طور پر موبائل آلات کے لیے اہم ہیں، جہاں اسکرین کی بورڈ سے ان پٹ فزیکل کی بورڈ کے مقابلے میں زیادہ محنت طلب ہوتا ہے۔ ہر اضافی حرف جو دستی طور پر داخل کرنا ہوتا ہے فارم پُر کرنے کا وقت اور غلطی کا خطرہ بڑھاتا ہے۔ جداکنندگان کا خودکار داخل کرنا عام شکلوں کے لیے ٹیپس کی تعداد 20–40% تک کم کرتا ہے۔

ان پٹ فارمیٹرز کی اقسام

iOS میں ان پٹ فارمیٹرز تین زمروں میں تقسیم ہیں: نظام Foundation فارمیٹرز، مخصوص Apple فارمیٹرز (PhoneNumberKit)، اور تیسرے فریق کی لائبریریاں (InputMask، MaskedTextField)۔ ہر زمرہ اپنے کام حل کرتا ہے اور نفاذ کی خصوصیات رکھتا ہے۔

نظام Foundation فارمیٹرز

NumberFormatter عددی اقدار کو فارمیٹ کرتا ہے: مالی رقم، فیصد، سائنسی اشارے۔ گروپ اور اعشاریہ جداکنندگان کی مقامی کاری کو سپورٹ کرتا ہے۔ DateFormatter تاریخوں اور اوقات کو مقامی کردہ سٹرنگز میں تبدیل کرتا ہے۔ یہ فارمیٹرز ڈسپلے کے لیے ڈیزائن کیے گئے ہیں، ان پٹ ماسکنگ کے لیے نہیں، اس لیے ٹائپنگ کے دوران انہیں براہ راست UITextField پر لاگو کرنا مشکل ہے۔

PhoneNumberKit

PhoneNumberKit Apple کی ایک لائبریری ہے جو قومی معیارات کے مطابق فون نمبر فارمیٹ کرتی ہے۔ یہ کوڈ کے ذریعے خود بخود ملک کا پتہ لگاتی ہے اور متعلقہ شکل لاگو کرتی ہے۔ مثال کے طور پر، روسی نمبر +7 912 345-67-89 امریکی نمبر +1 212-555-0198 سے مختلف فارمیٹ ہوتا ہے۔ PhoneNumberKit نمبر کی درستی کی بھی توثیق کرتا ہے۔

Input Mask لائبریریاں

تیسرے فریق کی لائبریریاں InputMask کسی بھی شکل کے لیے ایک عالمگیر ان پٹ ماسکنگ طریقہ کار فراہم کرتی ہیں: کارڈ نمبر (0000 0000 0000 0000)، تاریخیں (DD.MM.YYYY)، SNILS (000-000-000 00)، INN (000000000000)۔ لائبریریاں UITextFieldDelegate کے ذریعے کام کرتی ہیں، ان پٹ کو روکتی ہیں اور حقیقی وقت میں ماسک لاگو کرتی ہیں۔

قسمفریم ورکمقصدموڈ
نمبرNumberFormatterرقم، فیصد، سائنسیڈسپلے
تاریخیںDateFormatterتاریخ، وقت، ٹائم سٹیمپڈسپلے
فونPhoneNumberKitملکی معیارات کے مطابق نمبران پٹ + توثیق
ماسکInputMaskکارڈ، کوڈ، SNILS، INNحقیقی وقت میں ان پٹ

تجریدی کلاس NSFormatter

NSFormatter Foundation کا ایک تجریدی کلاس ہے جس سے تمام نظام iOS فارمیٹرز وراثت پاتے ہیں۔ یہ دو اہم طریقے متعین کرتا ہے: کسی آبجیکٹ کو سٹرنگ میں تبدیل کرنے کے لیے string(for:) اور سٹرنگ سے آبجیکٹ میں معکوس تبدیلی کے لیے getObjectValue(_:for:errorDescription:)۔ یہ دو طرفہ طریقہ کار ڈیٹا ڈسپلے کرنے اور ٹیکسٹ فیلڈز سے پڑھنے دونوں کی اجازت دیتا ہے۔

سسٹم کلاسز کے زیر احاطہ نہ آنے والی مخصوص شکلوں کے لیے NSFormatter پر مبنی حسب ضرورت فارمیٹر بنانا ممکن ہے۔ اس کے لیے string(for:) اور getObjectValue(_:for:errorDescription:) طریقوں کو اوور رائڈ کرنا ضروری ہے۔ حسب ضرورت فارمیٹر کو formatter پراپرٹی کے ذریعے UILabel، UITextField اور دیگر ویوز کے ساتھ استعمال کیا جا سکتا ہے۔

Apple حسب ضرورت فارمیٹر بنانے کے بجائے موجودہ Foundation فارمیٹرز استعمال کرنے کی سفارش کرتا ہے۔ NumberFormatter 32 زبانوں اور علاقائی معیارات کو درست طریقے سے ہینڈل کرتا ہے، DateFormatter مختلف ثقافتوں کے کیلنڈرز کو مدنظر رکھتا ہے، اور ByteCountFormatter قدر کے سائز کے مطابق بائٹس، کلو بائٹس اور میگا بائٹس کے درمیان خود بخود سوئچ کرتا ہے۔

NSFormatter غلط ان پٹ کے لیے خرابی کے پیغامات کی مقامی کاری کی بھی حمایت کرتا ہے۔ getObjectValue طریقہ خرابی کی وضاحت لوٹاتا ہے جسے مقامی شکل میں صارف کو دکھایا جا سکتا ہے۔ یہ خاص طور پر ان فارمز کے لیے اہم ہے جہاں صارف غلط شکل میں ڈیٹا داخل کرتا ہے — خرابی کا پیغام قابل فہم اور انٹرفیس کی زبان میں ہونا چاہیے۔

Input Mask اور ان پٹ ماسکنگ

Input Mask (ان پٹ ماسک) ایک سانچہ ہے جو ان پٹ ڈیٹا کی شکل متعین کرتا ہے اور ٹائپ کرتے ہی خود بخود جداکنندگان داخل کرتا ہے۔ ماسک میں پلیس ہولڈر حروف (عام طور پر ہندسوں کے لیے 0 یا 9، حروف کے لیے A) اور مستقل حروف (قوسین، ڈیش، خالی جگہیں) ہوتے ہیں جو خود بخود داخل ہوتے ہیں۔ صارف صرف اہم حروف داخل کرتا ہے، اور جداکنندگان سسٹم کے ذریعے داخل کیے جاتے ہیں۔

iOS کے لیے سب سے مقبول لائبریری RedMadRobot کی InputMask ہے۔ یہ شرائط، اختیاری بلاکس اور لاحقوں (سابقہ اور لاحقہ) کے ساتھ پیچیدہ ماسک کو سپورٹ کرتی ہے۔ لائبریری ایک ڈیلیگیٹ کے ذریعے نافذ کی گئی ہے، جو اسے ذیلی کلاسنگ کے بغیر کسی بھی UITextField کے ساتھ استعمال کرنے کی اجازت دیتی ہے۔ فون نمبرز، بینک کارڈز، تاریخوں، تصدیقی کوڈز اور دیگر ساختی ڈیٹا کے لیے ماسک سپورٹ کیے جاتے ہیں۔

InputMask فارمیٹ اپنا نحو استعمال کرتا ہے: لازمی حروف کے لیے مربع قوسین، اختیاری کے لیے گھنگھریالے قوسین، قوسین سے باہر مستقل حروف۔ مثال کے طور پر، کارڈ نمبر ماسک [0000] [0000] [0000] [0000] جیسا نظر آتا ہے، اور تاریخ ماسک [00]{.}[00]{.}[0000] جیسا۔ گھنگھریالے قوسین میں اختیاری بلاک غائب ہو جاتے ہیں اگر صارف ان کے لیے ڈیٹا داخل نہ کرے۔

فون نمبرز کے لیے، ماسک میں عام طور پر لاحقے میں ملکی کوڈ شامل ہوتا ہے: +7 ([000]) [000]-[00]-[00]۔ صارف نمبر کے صرف 10 ہندسے داخل کرتا ہے، جبکہ +7، (، )، - حروف خود بخود داخل ہوتے ہیں۔ کسی حرف کو حذف کرتے وقت، ماسک بیک اسپیس کو درست طریقے سے ہینڈل کرتا ہے، آخری اہم حرف کو ہٹا کر پچھلی پوزیشن پر واپس آتا ہے۔

فون نمبر فارمیٹنگ

فون نمبر فارمیٹنگ موبائل ایپلیکیشنز میں فارمیٹرز کا سب سے عام استعمال ہے۔ iOS اس مقصد کے لیے PhoneNumberKit فریم ورک فراہم کرتا ہے، جو کوڈ کے ذریعے خود بخود ملک کا تعین کرتا ہے اور متعلقہ قومی شکل لاگو کرتا ہے۔ لائبریری 200 سے زیادہ ممالک کو سپورٹ کرتی ہے اور باقاعدگی سے اپ ڈیٹ ہوتی ہے۔

PhoneNumberKit دو مراحل میں کام کرتا ہے: فارم کی شناخت اور اس کا اطلاق۔ پہلے مرحلے میں، لائبریری داخل کردہ ملکی کوڈ (مثال کے طور پر، +7 روس کی شناخت کرتا ہے) کا تجزیہ کرتی ہے اور فارمیٹنگ کے قواعد لوڈ کرتی ہے۔ دوسرے مرحلے میں، یہ قومی معیار کے مطابق ماسک لاگو کرتی ہے: روس کے لیے +7 XXX XXX-XX-XX، USA کے لیے — +1 XXX-XXX-XXXX، برطانیہ کے لیے — +44 XXXX XXX XXX۔

Apple Developer Documentation کے مطابق، iOS 16 سے UIContentUnavailableConfiguration کے ذریعے فون نمبر فارمیٹنگ کا ایک بلٹ ان طریقہ کار آیا ہے۔ تاہم، مکمل حقیقی وقت فارمیٹنگ کے لیے UITextFieldDelegate کے ذریعے PhoneNumberKit استعمال کرنے کی سفارش کی جاتی ہے۔ لائبریری نمبر کی توثیق بھی کرتی ہے: ہندسوں کی تعداد، ملکی کوڈ کی درستگی اور قومی شکل کے مطابقت کی جانچ کرتی ہے۔

بین الاقوامی ایپلیکیشنز کے لیے، یہ یاد رکھنا ضروری ہے کہ صارف نمبر کسی بھی شکل میں داخل کر سکتا ہے: +7، 8 (روس کے لیے) یا ملکی کوڈ کے بغیر۔ ایک اچھا فارمیٹر کسی بھی ابتدائی شکل کو پہچاننا چاہیے اور اسے + سابقہ اور ملکی کوڈ کے ساتھ ایک بین الاقوامی معیار میں معمول پر لانا چاہیے۔

Swift میں فارمیٹر کا نفاذ

Swift میں فارمیٹر کا نفاذ منتخب کردہ طریقہ کار پر منحصر ہے۔ نظام Foundation فارمیٹرز کے لیے، formatter پراپرٹی استعمال ہوتی ہے، جو iOS 15 سے UITextField کے لیے دستیاب ہے۔ Input Mask کے لیے، InputMask لائبریری کے ساتھ UITextFieldDelegate استعمال ہوتا ہے۔ فون نمبرز کے لیے — ڈیلیگیٹ کے ذریعے PhoneNumberKit۔

swift
import PhoneNumberKit

class PhoneViewController: UIViewController {

    let phoneNumberKit = PhoneNumberKit()
    @IBOutlet var phoneField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        phoneField.delegate = self
    }
}

extension PhoneViewController: UITextFieldDelegate {
    func textField(
        _ textField: UITextField,
        shouldChangeCharactersIn range: NSRange,
        replacementString string: String
    ) -> Bool {
        guard let text = textField.text else { return true }
        let partial = (text as NSString).replacingCharacters(in: range, with: string)
        textField.text = partial.applyPhoneMask()
        return false
    }
}

NumberFormatter کے لیے iOS 15+ میں، UITextField پر formatter پراپرٹی دستیاب ہے جو داخل کردہ نمبر کو ٹائپ کرتے ہی خود بخود فارمیٹ کرتی ہے۔ اس طریقہ کار میں ڈیلیگیٹ کے نفاذ کی ضرورت نہیں ہے اور یہ صارف کے مقام سیٹنگز کو مدنظر رکھتے ہوئے کرنسی فارمیٹس، فیصد اور دیگر عددی ڈیٹا کے لیے فوراً کام کرتا ہے۔

swift
let amountField = UITextField()
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "ru_RU")
amountField.formatter = formatter

RedMadRobot کی InputMask لائبریری کے لیے، سیٹ اپ ماسک ابتدا اور ڈیلیگیٹ کے ذریعے اطلاق کے ذریعے کیا جاتا ہے۔ لائبریری چسپاں کاری ہینڈلنگ، بیک اسپیس حذف کرنے کو سپورٹ کرتی ہے اور ٹیکسٹ سلیکشن کے ساتھ درست طریقے سے کام کرتی ہے۔

swift
import InputMask

class CardViewController: UIViewController {
    @IBOutlet var cardField: UITextField!
    var listener: MaskedTextFieldDelegate!

    override func viewDidLoad() {
        super.viewDidLoad()
        listener = MaskedTextFieldDelegate(
            primaryMaskFormat: "[0000] [0000] [0000] [0000]"
        )
        cardField.delegate = listener
    }
}

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

iOS کے لیے کون سی فارمیٹر لائبریری بہترین ہے؟

فون نمبرز کے لیے — PhoneNumberKit، عام مقاصد کے ماسک کے لیے — RedMadRobot کی InputMask۔ نمبرز اور تاریخوں کے لیے، نظام NumberFormatter اور DateFormatter کافی ہیں۔

کیا فارمیٹر UITextView کے ساتھ کام کرتا ہے؟

ہاں، UITextView UITextField جیسے ڈیلیگیٹس اور shouldChangeCharactersIn طریقوں کو سپورٹ کرتا ہے۔ UITextViewDelegate کو نافذ کرکے فارمیٹر لاگو کیا جا سکتا ہے۔

فارمیٹر کے ساتھ ٹیکسٹ چسپاں کاری کو کیسے ہینڈل کریں؟

چسپاں کاری اسی shouldChangeCharactersIn ڈیلیگیٹ کے ذریعے ہینڈل کی جاتی ہے۔ ایک اچھا فارمیٹر پہلے چسپاں کردہ ٹیکسٹ سے تمام جداکنندگان ہٹاتا ہے، پھر صاف ڈیٹا پر ماسک لاگو کرتا ہے۔

کیا ای میل فیلڈ کے لیے فارمیٹر ضروری ہے؟

نہیں، ای میل کا جداکنندگان کے ساتھ کوئی مقررہ فارمیٹ نہیں ہے۔ ای میل کے لیے، textContentType = .emailAddress اور @ علامت والا کی بورڈ سیٹ کرنا کافی ہے۔

فارمیٹر کارکردگی کو کیسے متاثر کرتا ہے؟

جدید فارمیٹرز ہر حرف کے لیے 1 ms سے بھی کم میں ان پٹ پراسیس کرتے ہیں۔ تاخیر صارف کے لیے ناقابل تصور ہے۔ InputMask اور PhoneNumberKit لائبریریاں حقیقی وقت کے آپریشن کے لیے بہتر بنائی گئی ہیں۔

خلاصہ

  • Formatter — ساختی ڈیٹا کی خودکار حقیقی وقت فارمیٹنگ کے لیے iOS طریقہ کار
  • نظام فارمیٹرز Foundation (NumberFormatter، DateFormatter) نمبرز اور تاریخوں کے لیے موزوں ہیں
  • PhoneNumberKit — 200+ ممالک کے معیارات کے مطابق فون نمبر فارمیٹنگ کا حل
  • Input Mask — کسی بھی ساختی ڈیٹا کے ان پٹ ماسک کے لیے عالمگیر آلہ
  • ان پٹ ماسک Apple کے اعداد و شمار کے مطابق فارم پُر کرنے میں غلطیاں 55% کم کرتے ہیں
  • UITextFieldDelegate — فارمیٹر کو ٹیکسٹ فیلڈز کے ساتھ ضم کرنے کا بنیادی طریقہ
  • سفارش — ساختی ڈیٹا فارمیٹ والے تمام فیلڈز کے لیے فارمیٹر استعمال کریں

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

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

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

مزید پڑھیں