Formatter — was es ist, Eingabeformatierer und NSFormatter

Autor: IT Sectr Veröffentlicht: 2026-07-08 Lesezeit: 8 Min.

Formatter in iOS ist ein Mechanismus zur Formatierung von Eingabedaten, der unstrukturierten Text automatisch in ein bestimmtes Format umwandelt. Die Systemklassen NSFormatter und InputMask ermöglichen die Verarbeitung von Telefonnummern, Kreditkarten, Daten und anderen strukturierten Daten. Laut Apple Foundation Framework Reference (2025) reduziert die korrekte Eingabeformatierung die Anzahl der Fehler beim Ausfüllen von Formularen um 55% und beschleunigt die Dateneingabe um 30%. Verwenden Sie Formatierer für alle Felder, bei denen eine strukturierte Eingabe erwartet wird — dies verbessert die Benutzererfahrung und die Qualität der gesammelten Daten.

Wichtige Punkte

  • Formatter — ein Systemmechanismus in iOS zur automatischen Eingabeformatierung nach einem bestimmten Muster
  • NSFormatter — eine abstrakte Foundation-Klasse, auf der NumberFormatter, DateFormatter und andere aufbauen
  • Input Mask — eine Eingabemaskierungsbibliothek zur Formatierung von Telefonnummern, Karten, Daten und Codes
  • Phone Number Kit — ein Framework von Apple zur Formatierung und Validierung von Telefonnummern
  • Eingabemasken definieren ein Muster (z.B. +7 (___) ___-__-__) und fügen automatisch Trennzeichen ein

Was ist Formatter in iOS?

Formatter in iOS ist eine Komponente, die rohe Benutzereingaben nach einem bestimmten Muster in ein strukturiertes Format umwandelt. Im Gegensatz zur einfachen Validierung nach dem Absenden des Formulars arbeitet ein Formatierer in Echtzeit und korrigiert die Datenanzeige während der Eingabe. Dies ist der wesentliche Unterschied: Der Benutzer sieht das formatierte Ergebnis sofort, ohne Trennzeichen manuell eingeben zu müssen.

iOS bietet mehrere Formatierungsebenen: System-Foundation-Formatierer (NumberFormatter, DateFormatter, ByteCountFormatter) zur Datenanzeige, das PhoneNumberKit-Framework für Telefonnummern und Drittanbieter-Bibliotheken InputMask für benutzerdefinierte Eingabemasken. Die Wahl der Ebene hängt vom Datentyp und der erforderlichen Formatierungsflexibilität ab.

Laut den Apple Human Interface Guidelines lösen Eingabeformatierer drei Aufgaben: Sie reduzieren die kognitive Belastung des Benutzers (kein Nachdenken über Trennzeichen erforderlich), verringern die Anzahl der Fehler (Daten werden im korrekten Format eingegeben) und beschleunigen das Ausfüllen von Formularen (automatischer Übergang zwischen Zifferngruppen).

Formatierer sind besonders wichtig für mobile Geräte, da die Eingabe mit einer Bildschirmtastatur mehr Aufwand erfordert als mit einer physischen. Jedes zusätzliche Zeichen, das manuell eingegeben werden muss, erhöht die Ausfüllzeit des Formulars und das Fehlerrisiko. Die automatische Einfügung von Trennzeichen reduziert die Anzahl der Tippvorgänge bei typischen Formaten um 20–40%.

Arten von Eingabeformatierern

Eingabeformatierer in iOS fallen in drei Kategorien: System-Foundation-Formatierer, spezialisierte Apple-Formatierer (PhoneNumberKit) und Drittanbieter-Bibliotheken (InputMask, MaskedTextField). Jede Kategorie löst ihre eigenen Aufgaben und hat Implementierungsbesonderheiten.

System-Foundation-Formatierer

NumberFormatter formatiert numerische Werte: Geldbeträge, Prozentsätze, wissenschaftliche Notationen. Unterstützt die Lokalisierung von Gruppen- und Dezimaltrennzeichen. DateFormatter konvertiert Daten und Zeiten in lokalisierte Zeichenfolgen. Diese Formatierer sind für die Anzeige konzipiert, nicht für die Eingabemaskierung, daher sind sie während der Eingabe nur schwer direkt auf UITextField anwendbar.

PhoneNumberKit

PhoneNumberKit ist eine Apple-Bibliothek zur Formatierung von Telefonnummern nach nationalen Standards. Sie erkennt automatisch das Land anhand der Vorwahl und wendet das entsprechende Format an. Beispielsweise wird eine russische Nummer +7 912 345-67-89 anders formatiert als eine amerikanische +1 212-555-0198. PhoneNumberKit validiert auch die Korrektheit der Nummer.

Input Mask Bibliotheken

Drittanbieter-Bibliotheken InputMask bieten einen universellen Mechanismus zur Eingabemaskierung für beliebige Formate: Kartennummern (0000 0000 0000 0000), Daten (DD.MM.JJJJ), SNILS (000-000-000 00), INN (000000000000). Die Bibliotheken arbeiten über den UITextFieldDelegate, indem sie die Eingabe abfangen und die Maske in Echtzeit anwenden.

TypFrameworkZweckModus
ZahlenNumberFormatterGeld, Prozente, wissenschaftlichAnzeige
DatenDateFormatterDatum, Uhrzeit, ZeitstempelAnzeige
TelefonePhoneNumberKitNummern nach LänderstandardsEingabe + Validierung
MaskenInputMaskKarten, Codes, SNILS, INNEchtzeiteingabe

Abstrakte Klasse NSFormatter

NSFormatter ist eine abstrakte Foundation-Klasse, von der alle Systemformatierer in iOS erben. Sie definiert zwei Hauptmethoden: string(for:) zum Konvertieren eines Objekts in eine Zeichenfolge und getObjectValue(_:for:errorDescription:) zur Rückwandlung einer Zeichenfolge in ein Objekt. Dieser bidirektionale Mechanismus ermöglicht sowohl die Anzeige von Daten als auch deren Auslesen aus Textfeldern.

Die Erstellung eines benutzerdefinierten Formatierers auf Basis von NSFormatter ist für spezifische Formate möglich, die nicht von den Systemklassen abgedeckt werden. Dazu müssen die Methoden string(for:) und getObjectValue(_:for:errorDescription:) überschrieben werden. Ein benutzerdefinierter Formatierer kann über die formatter-Eigenschaft mit UILabel, UITextField und anderen Ansichten verwendet werden.

Apple empfiehlt die Verwendung vorhandener Foundation-Formatierer anstelle der Erstellung eigener. NumberFormatter verarbeitet korrekt 32 Sprachen und regionale Standards, DateFormatter berücksichtigt Kalender verschiedener Kulturen, und ByteCountFormatter wechselt automatisch zwischen Bytes, Kilobytes und Megabytes je nach Wertgröße.

NSFormatter unterstützt auch die Lokalisierung von Fehlermeldungen bei falscher Eingabe. Die Methode getObjectValue gibt eine Fehlerbeschreibung zurück, die dem Benutzer in lokalisierter Form angezeigt werden kann. Dies ist besonders wichtig für Formulare, in denen der Benutzer Daten in einem falschen Format eingibt — die Fehlermeldung sollte verständlich und in der Schnittstellensprache sein.

Input Mask und Eingabemaskierung

Input Mask (Eingabemaske) ist eine Vorlage, die das Format der Eingabedaten definiert und während der Eingabe automatisch Trennzeichen einfügt. Die Maske besteht aus Platzhalterzeichen (normalerweise 0 oder 9 für Ziffern, A für Buchstaben) und konstanten Zeichen (Klammern, Bindestriche, Leerzeichen), die automatisch eingefügt werden. Der Benutzer gibt nur die bedeutenden Zeichen ein, und die Trennzeichen werden vom System eingefügt.

Die beliebteste Bibliothek für iOS ist InputMask von RedMadRobot. Sie unterstützt komplexe Masken mit Bedingungen, optionalen Blöcken und Affixen (Präfix und Suffix). Die Bibliothek ist über einen Delegaten implementiert, sodass sie ohne Unterklassenbildung mit jedem UITextField verwendet werden kann. Masken werden für Telefonnummern, Bankkarten, Daten, Bestätigungscodes und andere strukturierte Daten unterstützt.

Das InputMask-Format verwendet eine eigene Syntax: eckige Klammern für erforderliche Zeichen, geschweifte Klammern für optionale, konstante Zeichen außerhalb der Klammern. Beispielsweise sieht eine Kartennummernmaske wie [0000] [0000] [0000] [0000] aus und eine Datumsmaske wie [00]{.}[00]{.}[0000]. Optionale Blöcke in geschweiften Klammern verschwinden, wenn der Benutzer keine Daten für sie eingibt.

Für Telefonnummern enthält die Maske normalerweise die Ländervorwahl im Affix: +7 ([000]) [000]-[00]-[00]. Der Benutzer gibt nur 10 Ziffern der Nummer ein, während die Zeichen +7, (, ), - automatisch eingefügt werden. Beim Löschen eines Zeichens behandelt die Maske die Rücktaste korrekt, entfernt das letzte bedeutende Zeichen und kehrt zur vorherigen Position zurück.

Telefonnummernformatierung

Die Telefonnummernformatierung ist der häufigste Anwendungsfall für Formatierer in mobilen Anwendungen. iOS stellt für diesen Zweck das PhoneNumberKit-Framework bereit, das automatisch das Land anhand der Vorwahl bestimmt und das entsprechende nationale Format anwendet. Die Bibliothek unterstützt mehr als 200 Länder und wird regelmäßig aktualisiert.

PhoneNumberKit arbeitet in zwei Phasen: Formaterkennung und dessen Anwendung. In der ersten Phase analysiert die Bibliothek die eingegebene Ländervorwahl (z.B. identifiziert +7 Russland) und lädt Formatierungsregeln. In der zweiten Phase wendet sie eine dem nationalen Standard entsprechende Maske an: für Russland +7 XXX XXX-XX-XX, für die USA — +1 XXX-XXX-XXXX, für das Vereinigte Königreich — +44 XXXX XXX XXX.

Laut Apple Developer Documentation gibt es seit iOS 16 einen integrierten Mechanismus zur Telefonnummernformatierung über UIContentUnavailableConfiguration. Für eine vollständige Echtzeitformatierung wird jedoch die Verwendung von PhoneNumberKit über den UITextFieldDelegate empfohlen. Die Bibliothek validiert auch die Nummer: Sie prüft die Anzahl der Ziffern, die Gültigkeit der Ländervorwahl und die Einhaltung des nationalen Formats.

Für internationale Anwendungen ist es wichtig zu berücksichtigen, dass der Benutzer die Nummer in jedem Format eingeben kann: mit +7, 8 (für Russland) oder ohne Ländervorwahl. Ein guter Formatierer sollte jedes Anfangsformat erkennen und in einen einheitlichen internationalen Standard mit +-Präfix und Ländervorwahl normalisieren.

Formatiererimplementierung in Swift

Die Formatiererimplementierung in Swift hängt vom gewählten Ansatz ab. Für System-Foundation-Formatierer wird die formatter-Eigenschaft verwendet, die seit iOS 15 für UITextField verfügbar ist. Für Input Mask wird der UITextFieldDelegate mit der InputMask-Bibliothek verwendet. Für Telefonnummern — PhoneNumberKit über den Delegaten.

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

Für NumberFormatter mit iOS 15+ ist die formatter-Eigenschaft auf UITextField verfügbar, die die eingegebene Zahl während der Eingabe automatisch formatiert. Dieser Ansatz erfordert keine Implementierung eines Delegaten und funktioniert sofort für Währungsformate, Prozentsätze und andere numerische Daten unter Berücksichtigung des Benutzergebietsschemas.

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

Für die InputMask-Bibliothek von RedMadRobot erfolgt die Einrichtung durch Maskeninitialisierung und Anwendung über einen Delegaten. Die Bibliothek unterstützt die Behandlung von Einfügungen, Rücktastenlöschungen und arbeitet korrekt mit Textauswahlen.

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

Häufig gestellte Fragen

Welche Formatiererbibliothek ist am besten für iOS?

Für Telefonnummern — PhoneNumberKit, für allgemeine Masken — InputMask von RedMadRobot. Für Zahlen und Daten sind die System-NumberFormatter und DateFormatter ausreichend.

Funktioniert der Formatierer mit UITextView?

Ja, UITextView unterstützt dieselben Delegaten und shouldChangeCharactersIn-Methoden wie UITextField. Der Formatierer kann durch Implementierung des UITextViewDelegate angewendet werden.

Wie behandelt man das Einfügen von Text mit einem Formatierer?

Das Einfügen wird über denselben shouldChangeCharactersIn-Delegaten behandelt. Ein guter Formatierer entfernt zunächst alle Trennzeichen aus dem eingefügten Text und wendet dann die Maske auf die bereinigten Daten an.

Wird für das E-Mail-Feld ein Formatierer benötigt?

Nein, E-Mail hat kein festes Format mit Trennzeichen. Für E-Mail reicht es aus, textContentType = .emailAddress und eine Tastatur mit dem @-Symbol einzustellen.

Wie wirkt sich der Formatierer auf die Leistung aus?

Moderne Formatierer verarbeiten die Eingabe in weniger als 1 ms pro Zeichen. Die Verzögerung ist für den Benutzer nicht wahrnehmbar. Die Bibliotheken InputMask und PhoneNumberKit sind für den Echtzeitbetrieb optimiert.

Zusammenfassung

  • Formatter — ein iOS-Mechanismus zur automatischen Echtzeitformatierung strukturierter Daten
  • Systemformatierer Foundation (NumberFormatter, DateFormatter) sind für Zahlen und Daten geeignet
  • PhoneNumberKit — eine Lösung zur Formatierung von Telefonnummern nach Standards von mehr als 200 Ländern
  • Input Mask — ein universelles Werkzeug für Eingabemasken beliebiger strukturierter Daten
  • Eingabemasken reduzieren die Anzahl der Fehler beim Ausfüllen von Formularen um 55% laut Apple-Daten
  • UITextFieldDelegate — der primäre Weg, einen Formatierer in Textfelder zu integrieren
  • Empfehlung — verwenden Sie einen Formatierer für alle Felder mit strukturiertem Datenformat

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch