Formatter — τι είναι, μορφοποιητές εισόδου και NSFormatter

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-07-08 Χρόνος ανάγνωσης: 8 λεπ

Formatter στο iOS είναι ένας μηχανισμός μορφοποίησης εισερχόμενων δεδομένων που μετατρέπει αυτόματα αδομήωτο κείμενο σε καθορισμένη μορφή. Οι κλάσεις συστήματος NSFormatter και InputMask επιτρέπουν την επεξεργασία αριθμών τηλεφώνου, πιστωτικών καρτών, ημερομηνιών και άλλων δομημένων δεδομένων.

Βασικά σημεία

  • Formatter — μηχανισμός συστήματος iOS για αυτόματη μορφοποίηση εισερχόμενων δεδομένων σε καθορισμένο πρότυπο
  • NSFormatter — αφηρημένη κλάση Foundation στην οποία βασίζονται τα NumberFormatter, DateFormatter και άλλα
  • Input Mask — βιβλιοθήκη μάσκας εισόδου για μορφοποίηση αριθμών τηλεφώνου, καρτών, ημερομηνιών και κωδικών
  • Phone Number Kit — πλαίσιο της Apple για μορφοποίηση και επικύρωση αριθμών τηλεφώνου
  • Μάσκες εισόδου καθορίζουν το πρότυπο (π.χ. +7 (___) ___-__-__) και τοποθετούν αυτόματα τους διαχωριστήρες

Τι είναι το Formatter στο iOS;

Formatter στο iOS είναι ένα στοιχείο που μετατρέπει την αδή εισαγωγή χρήστη σε δομημένη μορφή σύμφωνα με ένα καθορισμένο πρότυπο.

Το iOS παρέχει αρκετά επίπεδα μορφοποίησης: μορφοποιητές συστήματος Foundation (NumberFormatter, DateFormatter, ByteCountFormatter) για εμφάνιση δεδομένων, πλαίσιο PhoneNumberKit για αριθμούς τηλεφώνου και βιβλιοθήκες τρίτων μερών InputMask για αυθαίρετες μάσκες εισόδου.

Σύμφωνα με τις Apple Human Interface Guidelines, οι μορφοποιητές εισόδου επιλύουν τρεις εργασίες: μειώνουν το γνωστικό φορτίο, μειώνουν τα σφάλματα και επιταχύνουν τη συμπλήρωση φορμών.

Οι μορφοποιητές είναι ιδιαίτερα σημαντικοί για κινητές συσκευές, όπου η εισαγωγή δεδομένων απαιτεί περισσότερη προσπάθεια.

Τύποι μορφοποιητών εισόδου

Μορφοποιητές εισόδου στο iOS χωρίζονται σε τρεις κατηγορίες: μορφοποιητές συστήματος Foundation, εξειδικευμένοι μορφοποιητές Apple (PhoneNumberKit) και βιβλιοθήκες τρίτων μερών (InputMask, MaskedTextField).

Μορφοποιητές συστήματος Foundation

NumberFormatter μορφοποιεί αριθμητικές τιμές. DateFormatter μετατρέπει ημερομηνίες και ώρες σε τοπικοποιημένες σειρές.

PhoneNumberKit

PhoneNumberKit — βιβλιοθήκη της Apple για μορφοποίηση αριθμών τηλεφώνου σύμφωνα με εθνικά πρότυπα.

Βιβλιοθήκες Input Mask

Βιβλιοθήκες τρίτων μερών InputMask παρέχουν έναν καθολικό μηχανισμό μάσκας εισόδου: αριθμοί καρτών (0000 0000 0000 0000), ημερομηνίες (ΜΜ.ΗΗ.ΕΕΕΕ).

ΤύποςΠλαίσιοΣκοπόςΤρόπος λειτουργίας
ΑριθμοίNumberFormatterΧρήματα, ποσοστά, επιστημονικάΕμφάνιση
ΗμερομηνίεςDateFormatterΗμερομηνία, ώρα, timestampΕμφάνιση
ΤηλέφωναPhoneNumberKitΑριθμοί κατά πρότυπα χωρώνΕισαγωγή + επικύρωση
ΜάσκεςInputMaskΚάρτες, κωδικοίΕισαγωγή σε πραγματικό χρόνο

Αφηρημένη κλάση NSFormatter

NSFormatter — είναι αφηρημένη κλάση Foundation από την οποία κληρονομούν όλοι οι μορφοποιητές συστήματος iOS. Ορίζει δύο κύριες μεθόδους: string(for:) και getObjectValue(_:for:errorDescription:).

Input Mask και μάσκα εισόδου

Input Mask — ένα πρότυπο που καθορίζει τη μορφή των εισερχόμενων δεδομένων και τοποθετεί αυτόματα τους διαχωριστήρες. Η δημοφιλέστερη βιβλιοθήκη για iOS — InputMask από τη RedMadRobot.

Μορφοποίηση αριθμών τηλεφώνου

Μορφοποίηση αριθμών τηλεφώνου — το πιο συχνό σενάριο χρήσης μορφοποιητών σε εφαρμογές κινητών. Από το iOS 16, υπάρχει ενσωματωμένος μηχανισμός μέσω UIContentUnavailableConfiguration.

Υλοποίηση μορφοποιητή σε Swift

Υλοποίηση μορφοποιητή σε Swift εξαρτάται από την προσέγγιση.

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+ είναι διαθέσιμη η ιδιότητα formatter στο UITextField.

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

Για τη βιβλιοθήκη InputMask RedMadRobot, η ρύθμιση γίνεται μέσω αρχικοποίησης της μάσκας.

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, για μάσκες γενικής χρήσης — InputMask από τη RedMadRobot.

Λειτουργεί ο μορφοποιητής με UITextView;

Ναι, το UITextView υποστηρίζει τις ίδιες αρμοδιότητες με το UITextField.

Πώς να χειριστούμε την επικόλληση με μορφοποιητή;

Η επικόλληση γίνεται μέσω του ίδιου shouldChangeCharactersIn delegate.

Χρειάζεται μορφοποιητής για το email;

Όχι, το email δεν έχει σταθερή μορφή με διαχωριστήρες.

Πώς επηρεάζει ο μορφοποιητής την απόδοση;

Οι σύγχρονοι μορφοποιητές επεξεργάζονται την εισαγωγή σε λιγότερο από 1 ms ανά χαρακτήρα.

Περίληψη

  • Formatter — μηχανισμός iOS για αυτόματη μορφοποίηση δομημένων δεδομένων σε πραγματικό χρόνο
  • Μορφοποιητές συστήματος Foundation (NumberFormatter, DateFormatter) είναι κατάλληλοι για αριθμούς και ημερομηνίες
  • PhoneNumberKit — λύση για μορφοποίηση αριθμών τηλεφώνου κατά πρότυπα 200+ χωρών
  • Input Mask — καθολικό εργαλείο για μάσκες εισόδου οποιωνδήποτε δομημένων δεδομένων
  • Μάσκες εισόδου μειώνουν τα σφάλματα κατά 55% σύμφωνα με τα δεδομένα Apple
  • UITextFieldDelegate — κύριος τρόπος ενσωμάτωσης μορφοποιητή με πεδία κειμένου
  • Σύσταση — χρησιμοποιείτε μορφοποιητή για όλα τα πεδία με δομημένη μορφή δεδομένων

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης