Formatter — mi ez, beviteli formázók és NSFormatter

Szerző: IT Sectr Megjelenés: 2026-07-08 Olvasási idő: 8 perc

Formatter iOS-ben a bevitt adatok formázásának mechanizmusa, amely automatikusan alakítja át a strukturálatlan szöveget egy meghatározott formátumba. A rendszer NSFormatter és InputMask osztályai lehetővé teszik telefonszámok, hitelkártyák, dátumok és egyéb strukturált adatok feldolgozását. Az Apple Foundation Framework Reference (2025) szerint a helyes beviteli formázás 55%-kal csökkenti a hibák számát az űrlapok kitöltésekor és 30%-kal gyorsítja az adatbevitelt.

Főbb pontok

  • Formatter — iOS rendszermechanizmus a bevitt adatok automatikus formázásához meghatározott sablonba
  • NSFormatter — absztrakt Foundation osztály, amelyen a NumberFormatter, DateFormatter és mások alapulnak
  • Input Mask — beviteli maszkoló könyvtár telefonszámok, kártyák, dátumok és kódok formázásához
  • Phone Number Kit — Apple keretrendszer telefonszámok formázásához és érvényesítéséhez
  • Beviteli maszkok meghatározzák a sablont (pl. +7 (___) ___-__-__) és automatikusan elhelyezik az elválasztókat

Mi az a Formatter iOS-ben?

Formatter iOS-ben egy komponens, amely a nyers felhasználói bevitelt strukturált formátumba alakítja át egy meghatározott sablon szerint. Ellentétben az űrlap elküldése utáni egyszerű érvényesítéssel, a formázó valós időben működik, korrigálva az adatok megjelenítését azok bevitele során.

Az iOS több formázási szintet kínál: rendszer Foundation formázók (NumberFormatter, DateFormatter, ByteCountFormatter) adatok megjelenítéséhez, PhoneNumberKit keretrendszert telefonszámokhoz és harmadik féltől származó InputMask könyvtárakat tetszőleges beviteli maszkokhoz.

Az Apple Human Interface Guidelines szerint a beviteli formázók három feladatot oldanak meg: csökkentik a kognitív terhelést, csökkentik a hibák számát és gyorsítják az űrlapkitöltést.

A formázók különösen fontosak a mobil eszközök számára, ahol az adatbevitel az érintőképernyős billentyűzettel több erőfeszítést igényel, mint a fizikaival.

Beviteli formázók típusai

Beviteli formázók iOS-ben három kategóriába oszlanak: rendszer Foundation formázók, specializált Apple formázók (PhoneNumberKit) és harmadik fél könyvtárai (InputMask, MaskedTextField).

Rendszer Foundation formázók

NumberFormatter numerikus értékeket formáz. DateFormatter dátumokat és időt alakít lokalizált szöveggé.

PhoneNumberKit

PhoneNumberKit — Apple könyvtár telefonszámok nemzeti szabványok szerinti formázásához.

Input Mask könyvtárak

Harmadik fél könyvtárai InputMask univerzális beviteli maszkolási mechanizmust nyújtanak bármilyen formátumhoz: kártyaszámok (0000 0000 0000 0000), dátumok (ÉÉ.HH.NN), adószám (00000000-0-00).

TípusKeretrendszerCélMűködési mód
SzámokNumberFormatterPénz, százalék, tudományosMegjelenítés
DátumokDateFormatterDátum, idő, időbélyegMegjelenítés
TelefonokPhoneNumberKitSzámok ország szabványok szerintBevitel + érvényesítés
MaszkokInputMaskKártyák, kódok, adószámValós idejű bevitel

Absztrakt NSFormatter osztály

NSFormatter — egy absztrakt Foundation osztály, amelyből az összes rendszer iOS formázó származik. Két fő metódust határoz meg: string(for:) és getObjectValue(_:for:errorDescription:). Az Apple a meglévő Foundation formázók használatát ajánlja. Az NSFormatter támogatja a hibaüzenetek lokalizálását is.

Input Mask és beviteli maszkolás

Input Mask — egy sablon, amely meghatározza a bevitt adatok formátumát és automatikusan elhelyezi az elválasztókat gépelés közben. A legnépszerűbb iOS könyvtár — InputMask a RedMadRobot-tól. Összetett maszkokat támogat feltételekkel és opcionális blokkokkal.

Telefonszámok formázása

Telefonszámok formázása — a leggyakoribb forgatókönyv a formázók használatára mobilalkalmazásokban. Az iOS 16-tól beépített mechanizmus érhető el az UIContentUnavailableConfiguration segítségével.

Formatter implementálása Swift-ben

Formatter implementálása Swift-ben a választott megközelítéstől függ. A rendszer Foundation formázókhoz az iOS 15-től elérhető formatter tulajdonság használható az UITextField-en.

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
    }
}

A NumberFormatter számára iOS 15+-tól elérhető a formatter tulajdonság az UITextField-en, amely automatikusan formázza a beírt számot.

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

A InputMask RedMadRobot konfigurálása a maszk inicializálásával és a delegált alkalmazásával történik.

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
    }
}

Gyakran Ismételt Kérdések

Melyik formázó könyvtár jobb iOS-re?

Telefonszámokhoz — PhoneNumberKit, általános célú maszkokhoz — InputMask a RedMadRobot-tól. Számokhoz és dátumokhoz elegendőek a rendszer NumberFormatter és DateFormatter.

Működik a formázó UITextView-vel?

Igen, a UITextView ugyanazokat a delegate-eket és shouldChangeCharactersIn metódusokat támogatja, mint az UITextField.

Hogyan kezeljük a szöveg beillesztését formázóval?

A beillesztés a shouldChangeCharactersIn delegate-en keresztül történik. Egy jó formázó először eltávolítja az összes elválasztót a beillesztett szövegből, majd alkalmazza a maszkot a tiszta adatokra.

Szükséges formázó az email mezőhöz?

Nem, az email nem rendelkezik rögzített formátummal elválasztókkal. E-maileknél elég beállítani a textContentType = .emailAddress és a @ szimbólummal ellátott billentyűzetet.

Hogyan befolyásolja a formázó a teljesítményt?

A modern formázók kevesebb mint 1 ms alatt dolgozzák fel a beviteleket karakterenként. A késleltetés észrevehetetlen a felhasználó számára. Az InputMask és PhoneNumberKit könyvtárak valós idejű működésre vannak optimalizálva.

Összefoglaló

  • Formatter — iOS mechanizmus strukturált adatok automatikus formázásához valós időben
  • Rendszer Foundation formázók (NumberFormatter, DateFormatter) alkalmasak számok és dátumok számára
  • PhoneNumberKit — megoldás telefonszámok formázásához 200+ ország szabványa szerint
  • Input Mask — univerzális eszköz tetszőleges strukturált adatok beviteli maszkjaihoz
  • Beviteli maszkok 55%-kal csökkentik a hibák számát az Apple adatai szerint
  • UITextFieldDelegate — a formázó szövegmezőkkel való integrálásának fő módja
  • Ajánlás — használjon formázót minden strukturált adatformátumú mezőhöz

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is